A melhor resposta que posso dar é um link que explica as diferenças entre .bash_profile
e .bashrc
: link
Há muita história lá e parte disso tem a ver com o The Old Days, quando nós discaríamos em sistemas com modems lentos e queríamos um shell instalado e rodando rápido. Então, gostaríamos de "fazer login" com um ambiente que fosse rápido de configurar e, em seguida, gerar "sub-shells" que estavam totalmente configurados, porque era mais rápido fazer a partir de um shell já registrado.
No seu caso, seu shell inicial está sendo iniciado como um shell de login (verifique cygwin.bat
- ele está chamando bash
com --login
). Mas o sub-shell do emacs não está sendo iniciado como um shell de login. Portanto, apenas o seu arquivo .bashrc
está sendo carregado.
Hoje em dia, acho que a maioria das pessoas mantém tudo no .bashrc e tem o .bash_profile carregado:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
Mas você precisa ter cuidado para não anexar repetidamente variáveis como PATH
se você adotar essa abordagem. Caso contrário, todos os sub-shell acabam com entradas duplicadas no PATH
e você pode obter variáveis muito longas e incontroláveis que precisam ser pesquisadas e as coisas ficam mais lentas.