@Dor: Ainda não tenho reputação suficiente para escrever comentários, mas posso responder-lhe o último comentário de 7 de dezembro de 2010 às 12:41, que foi:
"Quando eu adiciono o código aos dois arquivos e log no GNOME, ainda há uma única linha no arquivo Xsession.log (o arquivo Xsession.log está vazio antes de cada logon). Por que isso? pelo menos duas linhas no último caso. "
Não, porque quando você faz logon no Gnome (usando o GDM), ~/.bashrc
NÃO é executado, apenas ~/.profile
. Conforme explicado por Gilles, o Gnome chama /etc/gdm/Xsession
, que, por sua vez, obtém ~/.profile
. E ~/.profile
SOMENTE fontes ~/.bashrc
se estiver executando o bash .
De ~/.profile
:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
E quando você faz login no Gnome / GDM, você está não usando o Bash, porque, como Gilles também apontou, /etc/gdm/Xsession
usa a diretiva #! /bin/sh
, que no Ubuntu é um symlink para traço , não para bash.
Assim, todo o processo de login do Gnome não invoca o bash. É por isso que arquivos como / etc / profile, ~ / .bash_login, ~ / .bash_profile não são chamados automaticamente. É por isso que /etc/profile
e ~/.profile
tiveram que ser "manualmente", explicitamente fornecidos por /etc/gdm/Xsession
. E os dois testam o Bash antes de pesquisar ~/.bashrc
O teste em "é shell interativo" em / etc / profile (e também em ~ / .bashrc) pode ser falho, mas o teste bash funciona , e retorna false ao efetuar login. É por isso que seu arquivo de log tem apenas uma linha ... isso é de ~/.profile
Quando você abre um terminal, é um terminal bash. O próprio Bash chama ~/.bashrc
diretamente e ~/.profile
não é executado.
Espero que agora tudo esteja esclarecido.
Por último, mas não menos importante: Não forneça o ~ / .profile de ~ / .bashrc , como sugerido pela resposta anterior. Isso causará uma referência circular (ambos os arquivos são fonte um do outro) e está técnica e conceitualmente errada. Isso pode causar problemas se o bash for usado para login (talvez no modo de texto, console de conserto?)