A maneira mais simples é inventar uma máquina do tempo, visitar as várias pessoas que criaram arquivos de inicialização do shell e dizer-lhes para distinguir claramente entre três coisas:
- configuração da sessão, por exemplo variáveis de ambiente;
- inicialização de sessão, por exemplo, iniciando um shell de linha de comando ou um gerenciador de janelas ou executando
startx; - inicialização do shell, por exemplo aliases, prompt, atalhos de teclado.
Não é muito difícil acessar a sessão vs. shell de maneira portátil: a inicialização do tempo de login entra em .profile (ou .zprofile ou .login ), a inicialização do shell entra em .bashrc ou .zshrc . Eu escrevi anteriormente sobre .bash_profile , zsh vs. outros shells , mais sobre portabilidade (principalmente sobre o bash) , mais sobre quem lê .profile .
Um problema remanescente é distinguir entre a configuração da sessão e o lançamento da sessão. Na maioria dos casos, ~/.profile é executado quando você efetua login e pode ser usado como ambos, mas há exceções:
- Se o seu shell de login for (t) csh ou zsh,
~/.logine~/.zprofileserão originados em vez de~/.profile. Ditto for bash e~/.bash_profile, mas isso é facilmente resolvido pelo fornecimento de~/.profilede~/.bash_profile. - Se você fizer login em um gerenciador de exibição (xdm, gdm, kdm,…), seja seu
~/.profileé lido depende da versão do programa, de sua distribuição (Linux ou não) e de qual tipo de sessão você escolhe.- Se você contar com o gerenciador de exibição para iniciar uma sessão para você, seu
.profiledeve definir variáveis de ambiente, mas não iniciar uma sessão (por exemplo, um gerenciador de janelas). - O arquivo de configuração tradicional para as sessões X é
~/.xsession, executando a configuração da sessão e o lançamento da sessão. Portanto, o arquivo pode ser essencialmente. ~/.xsession; . ~/.xinitrc. Algumas distribuições obtêm~/.profileantes de~/.xsession. As distribuições modernas só escolhem~/.xsessionquando você seleciona uma sessão “personalizada” do gerenciador de exibição, e essa sessão nem sempre está disponível. - Seu gerenciador de sessão pode ter sua própria maneira de configurar variáveis de ambiente. (Essa é uma parte opcional do seu ambiente de área de trabalho, escolhida por você através de um arquivo de configuração ou selecionando um tipo de sessão ao efetuar login; não confunda com os scripts de inicialização de sessão fornecidos pelo gerenciador de exibição, que são executados sob seu usuário, mas escolhido em todo o sistema Sim, é uma bagunça.)
- Se você contar com o gerenciador de exibição para iniciar uma sessão para você, seu
Em resumo, ~/.profile é o local certo para variáveis de ambiente. Se não for lido, tente obtê-lo em ~/.xsession (e inicie seus programas X a partir dele) ou procure por um método específico do sistema (que pode depender da sua distribuição, gerenciador de exibição, se houver, tipo de sessão se gerenciador de exibição e ambiente de desktop ou gerenciador de sessão).