EDITAR

EDITAR

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/profilepor 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_INVOKINGantes 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 ~/.bashrcscript, se ele existir. Colocando cd -no final dos meus .bashrctrabalhos 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.

Responder2

Parece que você não criou ~/.profileo seguinte:

cd -

https://superuser.com/a/387273/139371

informação relacionada