Eu tenho um script executável que quero executar toda vez que faço login ou abro um novo shell interativo. Eu adicionei o caminho para este executável .profile
e o originei adicionando esta linha a.profile
source $HOME/bin/wrapper
Após a reinicialização, este script não foi executado.
Por que o fornecimento de um script .profile
não é executado pelo bash mesmo após reiniciar o fedora?
Edit: deixou a pergunta mais clara
Eu fiz algumas investigações e entendi que há duas razões pelas quais os scripts de sourcing
.profile
não funcionam:Quando você abre uma nova sessão de terminal, o bash é executado como um shell interativo sem login. Como
.profile
é executado apenas para um shell de login não interativo, iniciar uma sessão de terminal não o executa.Embora o script seja originado no login por
.profile
, diferentemente das variáveis de ambiente PATH que são exportadas para processos filho no login quando definido em.profile
, uma fonte é um comando e não pode ser exportado para processos filho iniciados a partir da primeira instância do bash inicializada no login. Em outras palavras,source
é interativo e precisa estar no.bashrc
qual é o único arquivo de inicialização que é executado em um shell interativo sem login.TL;DR
.profile
origina o script apenas uma vez no login e não é passado para o ambiente da sessão do terminal. Por isso, consegui que o script fosse adquirido, colocando-o em.bashrc
seu lugar.Para responder as perguntas acima, não tenho
~/.bash_profile
e o comando source foi adicionado ao.profile
Bônus: Por esses motivos, suponho que um alias definido
.profile
também não funcionaria, pois é um comando que precisa ser executado toda vez que um novo ambiente é criado em uma janela de terminal.De
man bash
(grifo meu):Você provavelmente tem um
~/.bash_profile
, como disse jasonwryan, então o seu~/.profile
nunca é lido. Esta resposta sugere o fornecimento~/.profile
em seu arquivo~/.bash_profile
. Você pode fazer isso ou pode fornecer seu script executável em~/.bash_profile
vez disso.Veja também o manual online do Bash .