Como eu lanço uma janela do Git Bash com um diretório de trabalho específico usando um script?

86

Como posso iniciar uma nova janela do Git Bash com um diretório de trabalho especificado usando um script (Bash ou lote do Windows)?

Meu objetivo é lançar várias janelas Git Bash a partir de um único script, cada uma definida para um diretório de trabalho diferente. Dessa forma, posso começar a trabalhar rapidamente após inicializar o computador, em vez de ter que abrir as janelas do Git Bash e navegar cada uma até o diretório de trabalho correto.

Não estou perguntando como alterar o diretório de trabalho padrão, como esta pergunta faz, mas para lançar uma ou mais janelas de terminal com diferentes diretórios de trabalho de um script.

holocronweaver
fonte
1
@StevenVascellaro Pergunta editada para explicar porque isso não é um idiota.
holocronweaver
Isso faz sentido. Retirei meu voto duplicado.
Stevoisiak

Respostas:

62

Outra opção é criar um atalho com as seguintes propriedades:

insira a descrição da imagem aqui

O alvo deve ser:

"% SYSTEMDRIVE% \ Arquivos de programas (x86) \ Git \ bin \ sh.exe" --login

Iniciar é a pasta na qual deseja que o prompt do Git Bash seja iniciado.

Drew Noakes
fonte
1
Kudos! Nunca soube que Start inteve algo a ver com o diretório de trabalho em que um programa pensa que está.
CausingUnderflowsEverywhere
Este é o método mais fácil. Depois, fixei esse atalho na barra de tarefas do Windows + 1, mantenho isso como o primeiro item da barra de tarefas, abre o repositório com git-bash diretamente.
Hareen Laks
48

Git Bash usa cmd.exepara seu terminal mais extensões de MSYS / MinGW que são fornecidas por sh.exe, uma espécie de cmd.exeinvólucro. No Windows, você inicia um novo terminal usando o startcomando.

Assim, um script de shell que inicia um novo terminal Git Bash com um diretório de trabalho específico é:

(cd C:/path/to/dir1 && start sh --login) &
(cd D:/path/to/dir2 && start sh --login) &

Um script de lote do Windows equivalente é:

C:
cd \path\to\dir1
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login 
D:
cd \path\to\dir2
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login 

Para obter a mesma fonte e tamanho de janela que o Git Bash iniciado no menu iniciar, é mais fácil copiar as configurações de atalho do menu iniciar para os padrões do console de comando (para alterar os padrões, abra cmd.exe, clique com o botão esquerdo no ícone superior esquerdo e selecione Padrões).

holocronweaver
fonte
1
Isso funciona para mim: cdpara o diretório que desejo que o Git Bash inicie e, em seguida, executar o startcomando em seu exemplo realmente me dará um terminal Git Bash nesse diretório. Tem certeza de que não está fazendo cd $HOME(ou cdsem args) em algum lugar de seus arquivos rc bash? (Como .bashrc, .profile...) Também tenha em mente a letra da unidade. Se você quiser iniciar o Git Bash na X:unidade, então cd x:\pathnão vai resolver, você tem que fazer x:e cd \pathantesstart
janos
1
Você está certo! Eu estava perdendo o fato de que você simplesmente não pode cd x:\path. Editarei minha solução de acordo.
holocronweaver de
Uma solução perfeita! Deixe-me apenas acrescentar que as cmd.execonfigurações padrão não são iguais às configurações padrão do Git Bash na instalação do Git Bash! E você tem que entender as diferenças entre as configurações padrão ( Defaultsdo menu de contexto) e as atuais ( Properties). Então, o que eu fiz foi: (1) abrir o Git Bash, selecionar Properties(configurações atuais), (2) ajustá-lo exatamente para o que eu quero (fonte, tamanho da janela + posição), (3) abrir cmd.exe, selecionar Defaults, (4 ) copiar e colar configurações do Git Bash para cmd.exe. Em seguida, OKem cmd.exe'configurações, Cancelem Git Bash' configurações e voila!
trejder de
48

Experimente a opção --cd =. Supondo que seu GIT Bash resida em C: \ Arquivos de programas \ Git, seria:

"C:\Program Files\Git\git-bash.exe" --cd="e:\SomeFolder"

Se usado dentro da chave do registro, o parâmetro da pasta pode ser fornecido com% 1:

"C:\Program Files\Git\git-bash.exe" --cd="%1"

Mike Kowalski
fonte
Como eu usaria o %1parâmetro de registro?
Erasmus Cedernaes
1
a resposta atual é tão obsoleta, esta deve ser a única!
Küzdi Máté
Este parece ser um arquivo em lote. (.bat)
Franta
26

Vamos adicionar a resposta de @Drew Noakes:

Alvo:

"C:\Program Files\Git\git-bash.exe" --cd=C:\GitRepo

O cdparâmetro deve ser uma das opções de como especificar o diretório de trabalho.

Observe também que não tenho nenhum --loginparâmetro lá: em vez disso, uso outro aplicativo extra, dedicado apenas para chaves SSH: Pageant (agente de autenticação PuTTY) .

Começar:

C:\GitRepo

Da mesma forma possível, como @Drew Noakes mencionou / mostrou aqui antes, eu também uso.

Tecla de atalho:

Ctrl + Alt + B

Esses atalhos são outro recurso menos conhecido do Windows. Mas há uma restrição: para que o atalho tenha efeito, ele deve ser colocado em algum lugar do subdiretório do usuário: A área de trabalho está bem.

Se você não quiser que ele fique visível, mas ainda ativável, coloque este .lnkarquivo, ou seja, na pasta de inicialização rápida, pois esse diretório foi criado para esses atalhos. (independentemente de ser exibido na área de trabalho) # 76080 # 3619355

"\Application Data\Microsoft\Internet Explorer\Quick Launch\"
Franta
fonte
12

Além disso, o Win10 oferece a opção de abrir o git bash em seu diretório de trabalho, clicando com o botão direito do mouse em sua pasta e selecionando GitBash aqui.

insira a descrição da imagem aqui

Monkrus
fonte
4

Windows 10

Esta é basicamente a resposta de @lengxuehx, mas atualizada para Win 10, e assume que a instalação do bash é do Git Bash para Windows dos downloads oficiais do git .

cmd /c (start /b "%cd%" "C:\Program Files\GitW\git-bash.exe") && exit

Acabei usando isso depois que perdi meus itens do menu de contexto para Git Bash como meu comando para executar a partir das configurações do registro. Caso você esteja curioso sobre isso, eu fiz o seguinte:

  1. Crie uma nova chave chamada Bashna shellchave emHKEY_CLASSES_ROOT\Directory\Background\shell
  2. Adicione um valor de string Icon(não uma nova chave!) Que é o caminho completo para seu git-bash.exe, incluindo a parte git-bash.exe. Você pode precisar envolver isso entre aspas.
  3. Edite o valor padrão Bashdo texto que deseja usar no menu de contexto insira a descrição da imagem aqui
  4. Adicione uma subchave para Bashchamadocommand
  5. Modifique commando valor padrão de paracmd /c (start /b "%cd%" "C:\Program Files\GitW\git-bash.exe") && exit insira a descrição da imagem aqui

Então, você poderá fechar o registro e começar a usar o Git Bash de qualquer lugar que seja um diretório real. Por exemplo, This PCnão é um diretório real.

insira a descrição da imagem aqui

kayleeFrye_onDeck
fonte
3
Para registro, a entrada git bash padrão dentro do registro HKEY_CLASSES_ROOT\Directory\Background\shell\git_shell\commandé"C:\Program Files\Git\git-bash.exe" "--cd=%v."
Ferrybig
Agradável! Obrigado, @Ferrybig! ^ _ ^
kayleeFrye_onDeck
4

Este é o comando que pode ser executado diretamente no Run dialog box(o atalho é win+ R) e também funciona bem salvo como um .batscript:

cmd /c (start /d "/path/to/dir" bash --login) && exit
lengxuehx
fonte
1
ele executa o novo cmd no Windows 10
kyb
1
@kyb é suposto ser /bpara Win 10
kayleeFrye_onDeck
@kyb Eu fiz uma resposta que é uma modificação da resposta de lengxuehx, caso você ou outra pessoa ainda esteja interessado: stackoverflow.com/a/39779451/3543437
kayleeFrye_onDeck
3

Não estou familiarizado com o Git Bash, mas presumindo que seja um shell git (como git-sh) residente /path/to/my/gitshelle seu programa de terminal favorito se chama `myterm ', você pode fazer o seguinte script:

(cd dir1; myterm -e /path/to/my/gitshell) &
(cd dir2; myterm -e /path/to/my/gitshell) &
...

Observe que o parâmetro -epara execução pode ser nomeado de forma diferente com seu programa de terminal favorito.

Marcus Rickert
fonte
Obrigado, sua resposta me fez pensar na direção certa! É assim que eu faço no Linux, mas não consegui descobrir o equivalente no MS Windows ... até agora! Para Git Bash, mytermé cmd.exe com adições via MSYS / MinGW. Para iniciar um novo cmd, você usa o startcomando específico do Windows seguido pelo caminho para o Git Bash sh.exee, em seguida, quaisquer opções de linha de comando que desejar. Minha resposta dá detalhes.
holocronweaver
-1

Eu posso ter dado a direção errada, mas gosto desse truque.

Usando o Windows Explorer, apontando para qualquer diretório que você deseja, digite "cmd" na barra de endereço para abrir o prompt de comando do Windows nesse diretório.

Se você tem o diretório "Git" em seu caminho, da mesma forma, você pode digitar "git-bash" na barra de endereços e um Git Shell será aberto nesse diretório.

Adauto Bronzatti
fonte