
eu tenho vistoessemas não funciona para mim. Não estou usando a versão do bash do Git, mas aquela que vem com o cygwin, então isso pode ser parte do problema. Aqui está como configuro minha guia no Console2:
Title: bash.exe
Shell: C:\cygwin\bin\bash.exe --login -i
Startup dir: %HOMEDRIVE%%HOMEPATH%
Esta é minha entrada de registro:
Directory
shell
Console2
Open Console2 Here
command
"C:\Console2\Console.exe" -d "%1"
bash sempre inicia no meu diretório inicial em vez do diretório em que estou clicando, então preciso cd /cygdrive/d/code
... etc. Tentei remover o valor no campo "Diretório de inicialização", alterando-o para% 1,% 1% sem sorte.
Eu também tenteiesta soluçãomas também não funcionou para mim:
Title: bash.exe
Shell: C:\cygwin\bin\bash.exe -l
Registro:
Directory
shell
Console2
Open Console2 Here
command
"C:\Console2\Console.exe" -d "%V"
As soluções acima funcionam para as versões de bash.exe e sh.exe incluídas no Git, mas não para as versões incluídas no cygwin por algum motivo. Ainda estou procurando uma razão para isso.
EDITAR
Selecionei uma resposta abaixo, mas acho que a segunda solução acima teria funcionado se eu tivesse criado o arquivo .profile na pasta certa. Continuei tentando criá-lo em meu diretório inicial normal, em vez do diretório inicial usado pelo cygwin, e é por isso que ele nunca executou o script. Isso me levou a acreditar que o arquivo .profile era desnecessário. A resposta que selecionei (obrigado, Hugh!) Explica claramente como cada um dos scripts (.bash_profile, .bash_login, .profile e .bashrc) são usados pelo bash, o que me ajudou a descobrir que os estava colocando no lugar errado.
Responder1
Demanual,
Quando o Bash é invocado como um shell de login interativo ou como um shell não interativo com a opção --login, ele primeiro lê e executa comandos do arquivo /etc/profile, se esse arquivo existir.
/etc/profile
por padrão 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 em lote do Windows que defina a variável de ambiente CHERE_INVOKING
antes de iniciar o bash. Isso não é muito legal.
Próximo,
Depois de ler esse arquivo, ele procura ~/.bash_profile, ~/.bash_login e ~/.profile, nessa ordem, e lê e executa comandos do primeiro que existe e é legível.
Esses scripts de perfil, por padrão, executam seu ~/.bashrc
script, se ele existir. Colocando cd -
no final dos meus .bashrc
trabalhos para mim (com o console2 e o Cygwin bash mais recentes):
echo 'cd -' >> ~/.bashrc
Aliás, eu invoco o Console2 ( Console.exe
) sem argumentos - o Windows Explorer garante que ele seja inicializado no diretório em que cliquei com o botão direito. Estou usando o XP, mas duvido que a MS mude esse comportamento em versões posteriores do Windows. Também deixo a opção "diretório de inicialização" em branco para minha guia Bash.