Tradicionalmente, o local para definir variáveis de ambiente por usuário em sistemas unix é ~/.profile
. Esse arquivo é lido pelo shell de login (ou seja, o programa que é iniciado quando você efetua login e pode digitar comandos nele), desde que o shell de login seja um shell compatível com o Bourne.
O Bash é um shell compatível com o Bourne. Quando ele é chamado como um shell de login, lê ~/.bash_profile
se esse arquivo existir e ~/.profile
if ~/.bash_profile
não existe.
Como regra geral, se você digitar sua senha no modo de texto (por exemplo, em um console de texto ou remotamente com ssh), o shell que você recebe é um shell de login.
No entanto, se você digitar sua senha em um programa gráfico e efetuar login em um ambiente gráfico, isso ignorará o shell de login normal. Se .profile
é lido nesse caso depende de como a sessão gráfica é configurada; por exemplo, varia entre as distribuições do Linux, entre os gerenciadores de exibição e entre os ambientes de desktop. Às vezes, um dos programas na cadeia chama explicitamente um shell de login; às vezes, um dos programas lê explicitamente ~/.profile
; e às vezes nada disso acontece e ~/.profile
não é lido.
Para dar um exemplo da variabilidade, tanto quanto eu posso ver de uma rápida olhada nos scripts envolvidos, no Ubuntu 10.04: se você logar com o kdm ou lxdm, ~/.bash_profile
é lido se existir, e ~/.profile
caso contrário; se você efetuar login com o gdm, somente ~/.profile
será lido; se você efetuar login com xdm, ~/.profile
não será lido.
Todos os sistemas que eu conheço fornecem alguma maneira de configurar variáveis de ambiente por usuário. Infelizmente não há resposta geral.
Observe que às vezes você verá recomendações para definir variáveis de ambiente em ~/.bashrc
ou iniciar um shell de login em cada terminal em um ambiente de GUI. Ambas são idéias ruins; Uma das razões é o problema que você teve, ou seja, que suas variáveis de ambiente só estavam disponíveis em programas iniciados através de um terminal, e não em programas iniciados diretamente com um ícone ou menu ou atalho de teclado.