Come avviare Git Bash dalla riga di comando del DOS?


106

Ho quello che spero sia una semplice domanda, ma non sono ancora riuscito a trovare la risposta. Vorrei avviare Git Bash da un file batch DOS. Ecco cosa ho provato finora:

  1. Avviato Git Bash dal pulsante Start di Win 7
  2. Utilizza CTRL + ALT + CANC per identificare il processo come "sh.exe"
  3. Avviato sh.exe dal file batch utilizzando il comando di avvio

    start sh.exe
    

Tuttavia, questo non avvia l'ambiente completo Git Bash. Git Bash ha di solito "mingw32" nella barra del titolo, ma sh.exe ha un percorso completo ... Git\bin\sh.exe. Mi sembra che ci siano alcune sovrapposizioni o dipendenze di cui non sono a conoscenza, che devono essere caricate (inserite? Importate?).

Questo è stato uno dei migliori risultati che ho trovato attraverso la ricerca sul Web, ma per me non ha completamente senso e non sono sicuro che si applichi esattamente alla mia situazione:

Esecuzione di git dalla riga Cmd di Windows: dove sono i file chiave?

Sono un principiante nel mondo dello scripting batch per DOS.


1
Bene, in realtà non è la riga di comando DOS a meno che: (a) Hai riscontrato una sorta di anomalia temporale e stai usando Windows 9x / ME, dove si command.comtrova l'unica shell inclusa nel sistema operativo (b) Sei su un 32- bit NT e invocato command.comte stesso o un vecchio programma lo ha fatto per te. Vedi Qual è la differenza tra CMD e il prompt dei comandi in Windows? per maggiori informazioni.
SamB

Risposte:


125

Se vuoi avviare da un file batch:

  • per x86

    start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login
    
  • per x64

    start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login
    

Grazie @Endoro! Sebbene la risposta di @Klas Mellbourn fosse corretta per Powershell, la tua è più corretta poiché eseguo dal file batch DOS. L'aggiunta della direttiva "start" fa sì che il programma venga eseguito in modo asincrono, che è esattamente ciò di cui ho bisogno! Pollice su!
Eric Hepperle - CodeSlayer2010

14
C'è un modo per digitare ed eseguire un comando nella finestra batch di Git dopo che è stato aperto dall'interno del file batch?
Nick

1
@OviC Sei sicuro che la tua modifica sia corretta? "Programmi (x86)" esiste solo nell'architettura x64 per programmi a 32 bit.
Drunix

@Drunix hai ragione, non esiste un percorso "Programmi (x86) \" nei sistemi x86. Ho fatto un rollback. Grazie.
Endoro

Cosa succede se non è installato sull'unità di sistema? E se non è installato nei file di programma?
Michael Kruglos

44

Non sono sicuro di cosa intendi esattamente per "ambiente Git Bash completo", ma se lo faccio ricevo il simpatico prompt

"C:\Program Files\Git\bin\sh.exe" --login

In PowerShell

& 'C:\Program Files\Git\bin\sh.exe' --login

L' --loginopzione fa in modo che la shell esegua i file di avvio della shell di login .


Grazie @Klas Mellbourn. La tua risposta è buona per Powershell, ma senza l'aggiunta della direttiva "start" come nella risposta di Endoro, interrompe l'esecuzione del programma successivo finché non si esce dalla shell, che non è il comportamento desiderato, altrimenti ti avrei votato.
Eric Hepperle - CodeSlayer2010

Uso Console2 alla finestra cmde questo provoca uno strano comportamento. L'ho messo in un file .bat e ora va tutto bene:@"%SYSTEMDRIVE%\Program Files\Git\bin\bash.exe" --login
Grault

25

Preferisco usare git-bash.exe invece di sh.exe.

start "" "%ProgramFiles%\Git\git-bash.exe" -c "tail -f /c/Windows/win.ini"

Puoi smettere di chiudere la finestra quando chiami /usr/bin/bash --login -ialla fine;

start "" "%ProgramFiles%\Git\git-bash.exe" -c "echo 1 && echo 2 && /usr/bin/bash --login -i"

Nota: non sono sicuro che sia un buon metodo :)


4
Bella risposta, ma la finestra git-bash si chiude immediatamente. Sai come disabilitare la chiusura automatica al termine dell'esecuzione del comando?
Marco

@Mark Grazie Marco. Ho aggiunto un esempio alla mia risposta sopra. Sfortunatamente non sono sicuro di come dovremmo farlo nel modo giusto perché non sono una persona di Windows :)
kujiy

1
[code] start "" "% ProgramFiles% \ Git \ git-bash.exe" [/ code] funziona alla grande!
PauAI

@PauAI 2018 ora ... Ho provato start "" "%ProgramFiles%\Git\git-bash.exe"da una riga di comando dell'amministratore e, sebbene visualizzi Git Bash in una nuova finestra, digitando un semplice comando come non si lsottiene alcun output. Questo metodo non sembra consentire l'esecuzione dei comandi di Linux. ... EDIT: ha funzionato, ci è voluto molto tempo (2 minuti) per eseguire ls. Quindi è di nuovo eseguito in meno di 1 secondo. ... strano.
Eric Hepperle - CodeSlayer2010

8

Preferisco mettere git nella variabile d'ambiente e semplicemente chiamare

c:\Users\[myname]>sh
or 
c:\Users\[myname]>bash

Passaggi per creare la variabile d'ambiente (Win7)

  • Dal desktop, fare clic con il pulsante destro del mouse sull'icona del computer.
  • Scegli Proprietà dal menu contestuale.
  • Fare clic sul collegamento Impostazioni di sistema avanzate.
  • Fare clic su Variabili d'ambiente.
  • Nella sezione Variabili utente, premi il pulsante NUOVO, inserisci il nome della variabile come GIT_HOME, il valore come (cartella-dove-hai-installato-git).

    • per me lo è stato c:\tools\git, altri forse l'hanno fattoC:\Program Files\Git
  • trova la PATHvariabile d'ambiente e selezionala. Fare clic su Modifica. (Se la variabile d'ambiente PATH non esiste, fare clic su Nuovo).

  • Nella finestra Modifica, aggiungi un nuovo valore %GIT_HOME%e %GIT_HOME%\bin. Fare clic su OK. Chiudi tutte le finestre rimanenti facendo clic su OK.
  • [Assicurati di chiudere il CMD che desideri utilizzare per git]
  • apri un nuovo prompt dei comandi e digita sho bashogit-bash

2
Grazie! Sono stato in grado di farlo funzionare con GIT_HOME come C:\Program Files\Gite digitando git-bashda CMD. Inoltre, stranamente, anche se devi solo digitare PATH per vedere i suoi contenuti, per vedere i contenuti di questa variabile personalizzata git devi digitareecho %GIT_HOME%
Eric Hepperle - CodeSlayer2010

Grazie, questa è stata una grande aggiunta. Per aggiungere a questo, quando hai la GIT_HOMEvariabile e usi il git-bashcomando (o git-cmd) la aprirà in una nuova finestra. Se aggiungi alla variabile d'ambiente "PATH", passerà in quella finestra esistente. Puoi anche digitare exit"logout" da git bash e mantenere comunque il prompt del DOS.
Keith E. Truesdell

4
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login -i

Git bash verrà aperto.


3

https://stackoverflow.com/a/33368029/15789

Ho pubblicato una risposta qui.

Apri una finestra di comando di Windows ed esegui questo script. Se c'è un cambiamento nella tua directory di lavoro, aprirà un terminale bash nella tua directory di lavoro e mostrerà lo stato corrente di git. Mantiene aperta la finestra bash, chiamando exec bash.

Se si dispone di più progetti, è possibile creare copie di questo script con una cartella di progetto diversa e richiamarlo da uno script batch principale.


3

Ho usato le informazioni sopra per creare una soluzione più permanente. Quanto segue creerà l'alias sh che puoi usare per aprire Git Bash:

echo @start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login > %systemroot%\sh.bat

Grazie dpate! Ho incollato la tua istruzione echo nella riga di comando e sono corso she una finestra git-bash è stata lanciata e sono stato in grado di eseguire i comandi perfettamente. Puoi aggiungere un piccolo dettaglio alla tua risposta spiegando come funziona? Preferisco imparare come funziona la pesca piuttosto che qualcuno mi dia un pesce, e penso che andrà a beneficio di altri che cercano una buona risposta. grazie
Eric Hepperle - CodeSlayer2010

0

La risposta di Endoro è invecchiata e non posso commentare;

# if you want to launch from a batch file or the command line:

start "" "%ProgramFiles%\Git\bin\sh.exe" --login

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.