Respostas:
Tradicionalmente, é o local para definir variáveis de ambiente por usuário em sistemas unix ~/.profile
. Este arquivo é lido pelo shell de login (ou seja, o programa iniciado quando você faz login e no qual você pode digitar comandos), desde que o shell de login seja um shell compatível com Bourne.
Bash é um shell compatível com Bourne. Quando é chamado como um shell de login, lê ~/.bash_profile
se esse arquivo existe e ~/.profile
se ~/.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 obtido é um shell de login.
No entanto, se você digitar sua senha em um programa gráfico e se conectar a um ambiente gráfico, isso ignora o shell de login normal. A .profile
leitura deste caso depende de como a sessão gráfica é configurada; por exemplo, varia entre distribuições Linux, gerenciadores de exibição e ambientes de desktop. Às vezes, um dos programas da 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 posso ver de uma rápida olhada nos scripts envolvidos, no Ubuntu 10.04: se você efetuar login com o kdm ou o lxdm, ~/.bash_profile
será lido se existir ~/.profile
; se você efetuar login com o gdm, somente ~/.profile
será lido; se você efetuar login com o xdm, ~/.profile
não será lido.
Todos os sistemas que conheço oferecem uma maneira de definir variáveis de ambiente por usuário. Infelizmente não há resposta geral.
Observe que algumas vezes você verá recomendações para definir variáveis de ambiente ~/.bashrc
ou iniciar um shell de login em cada terminal em um ambiente da GUI. Ambos são más idéias; uma das razões é o problema que você teve, a saber, que suas variáveis de ambiente estavam disponíveis apenas em programas iniciados por meio de um terminal, e não em programas iniciados diretamente com um ícone ou menu ou atalho de teclado.
.profile
é lido quando você faz login. A inserção de variáveis de ambiente .bashrc
não funciona, e seu cenário ilustra que: o aplicativo (presumivelmente GUI) que executa esse shell deve ter suas variáveis de ambiente, mas se você as definir .bashrc
, ele não funcionará. t.
A resposta definitiva está na seção da página de manual do bash em Arquivos de inicialização do Bash . "Quando um shell interativo que não é um shell de login é iniciado, o Bash lê e executa comandos de ~ / .bashrc, se esse arquivo existir."
As respostas às suas outras perguntas apontam que o eshell não é realmente executado bash
. Emacs eshell
não é bash
. Assumir que eshell
isso carregaria .bashrc
é tão defeituoso quanto assumir zsh
ou csh
carregaria .bashrc
. É uma concha diferente.
Eu vejo duas opções:
bash
e o código elisp eshell
.Você também pode estar interessado na discussão sobre como adicionar um diretório a um caminho sem duplicatas .
Definir seu PATH em seu perfil ~ /. Deve funcionar. Esse arquivo é lido no login por todos os shell compatíveis com POSIX ou Bourne que eu conheço, incluindo o bash. Se você fizer alterações nesse arquivo, precisará sair e fazer login novamente para que as alterações tenham efeito. Como PATH faz parte do ambiente do seu processo de login, ele deve ser exportado para todos os shell iniciados posteriormente.