TL; DR - tente remover --login
da sua invocação bash
Se você estiver usando o Git for Windows com o ConEmu ou o Cmder, o comando para iniciar o bash provavelmente será parecido com isto:
cmd /c ""%ConEmuDir%\..\git-for-windows\bin\bash" -i --login"
Observe o --login
bit. Aparentemente , se --login
for passado para o bash, ele executará primeiro os comandos de /etc/profile
, então executam um dos ~/.bash_profile
, ~/.bash_login
ou ~/.profile
- o que existir.
Agora, o msys fornece um /etc/profile
, que executa todos os scripts em /etc/profile.d
. O Cmder oferece /etc/profile.d/cmder.sh
, que executa ~/.bashrc
(excerto abaixo)
# Source the users .bashrc file if it exists
if [ -f "${HOME}/.bashrc" ] ; then
. "${HOME}/.bashrc"
fi
Tudo isso é feito dentro da execução de /etc/profile
. Depois, bash --login
tentará executar ~/.bash_profile
. O Git for Windows gera este ~/.bash_profile
:
# generated by Git for Windows
test -f ~/.profile && . ~/.profile
test -f ~/.bashrc && . ~/.bashrc
Após a execução, ~/.bashrc
é executado uma segunda vez.
Solução? Remova --login
da invocação do bash . No Cmder / ConEmu, isso pode ser feito pressionando a seta para baixo ao lado do botão mais, encontrando seu bash na lista e alterando o comando para:
cmd /c ""%ConEmuDir%\..\git-for-windows\bin\bash" -i"
Sem o --login
bit, o bash ignorará a execução de /etc/profile
e só executará ~/.bashrc
(... e /etc/bash.bashrc
, mas o msys não executará o ~/.bashrc
)