No manual ,
Por padrão,When Bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists.
/etc/profile
contém o seguinte código:
# Make sure we start in home unless invoked by CHERE
if [ ! -z "${CHERE_INVOKING}" ]; then
unset CHERE_INVOKING
else
cd "${HOME}" || echo "WARNING: Failed attempt to cd into ${HOME}!"
fi
Portanto, uma solução seria criar um arquivo de lote do Windows que define a variável de ambiente CHERE_INVOKING
antes de iniciar o bash. Isso não é muito legal.
Em seguida,
After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.
Por padrão, esses scripts de perfil executam seu script ~/.bashrc
, se existir. Colocar cd -
no final do meu .bashrc
funciona para mim (com o mais recente Console2 e Cygwin bash):
echo 'cd -' >> ~/.bashrc
BTW, eu invoco o Console2 ( Console.exe
) sem argumentos - o Windows Explorer garante que ele inicialize no diretório em que eu cliquei com o botão direito do mouse. Estou usando o XP, mas duvido que o MS altere esse comportamento em versões posteriores do Windows. Eu também deixo a opção "startup dir" em branco para minha aba Bash.