Comment lancer Git Bash à partir de la ligne de commande DOS?

106

J'ai ce que j'espère être une question simple, mais je n'ai pas encore trouvé la réponse. Je voudrais lancer Git Bash à partir d'un fichier batch DOS. Voici ce que j'ai essayé jusqu'à présent:

  1. Lancement de Git Bash à partir du bouton Démarrer de Win 7
  2. Utilisé CTRL + ALT + SUPPR pour identifier le processus comme "sh.exe"
  3. Lancement de sh.exe à partir du fichier de commandes à l'aide de la commande de démarrage

    start sh.exe
    

Cependant, cela ne lance pas l'environnement Git Bash complet. Git Bash a généralement « MingW32 » dans la barre de titre, mais sh.exe a un chemin complet ... Git\bin\sh.exe. J'ai l'impression qu'il y a des superpositions ou des dépendances dont je ne suis pas au courant, qui doivent également être chargées (extraites? Importées?).

C'est l'un des meilleurs résultats que j'ai trouvés en recherchant sur le Web, mais cela n'a pas de sens pour moi et je ne suis pas sûr que cela s'applique exactement à ma situation:

Exécution de git à partir de la ligne Windows Cmd: Où sont les fichiers clés?

Je suis un débutant dans le monde des scripts batch DOS.

Eric Hepperle - CodeSlayer2010
la source
1
Eh bien, ce n'est pas réellement la ligne de commande DOS sauf si: (a) Vous avez rencontré une sorte d'anomalie de temps et utilisez Windows 9x / ME, où command.comest le seul shell inclus avec le système d'exploitation (b) Vous êtes sur un 32- bit système NT et soit invoqué command.comvous-même, soit un ancien programme l'a fait pour vous. Voir Quelle est la différence entre CMD et l'invite de commande dans Windows? pour plus d'informations.
SamB

Réponses:

125

Si vous souhaitez lancer à partir d'un fichier batch:

  • pour x86

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

    start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login
    
Endoro
la source
Merci @Endoro! Bien que la réponse de @Klas Mellbourn soit correcte pour Powershell, la vôtre est plus correcte puisque j'exécute à partir d'un fichier batch DOS. L'ajout de la directive "start" provoque l'exécution du programme de manière asynchrone, ce qui est exactement ce dont j'ai besoin! Pouces vers le haut!
Eric Hepperle - CodeSlayer2010
14
Existe-t-il un moyen de taper et d'exécuter une commande dans la fenêtre de traitement par lots Git après son ouverture à partir du fichier de commandes?
Nick
1
@OviC Êtes-vous sûr que votre modification est correcte? "Program Files (x86)" n'existe que sous l'architecture x64 pour les programmes 32 bits.
Drunix
@Drunix vous avez raison, il n'y a pas de chemin "Program Files (x86) \" dans les systèmes x86. J'ai fait une restauration. Merci.
Endoro
Que faire s'il n'est pas installé sur le lecteur système? Et s'il n'est pas installé dans les fichiers programme?
Michael Kruglos
44

Je ne sais pas exactement ce que vous entendez par "environnement Git Bash complet", mais j'obtiens une invite si je le fais

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

Dans PowerShell

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

Le --logincommutateur permet au shell d'exécuter les fichiers de démarrage du shell de connexion .

Klas Mellbourn
la source
Merci @Klas Mellbourn. Votre réponse est bonne pour Powershell, mais sans l'ajout de la directive "start" comme dans la réponse d'Endoro, cela interrompt l'exécution du programme suivant jusqu'à ce que le shell soit sorti, ce qui n'est pas le comportement souhaité, sinon je vous aurais voté.
Eric Hepperle - CodeSlayer2010
J'utilise Console2 pour fenêtrer cmd, et cela provoque un comportement étrange. J'ai mis cela dans un fichier .bat et maintenant tout va bien:@"%SYSTEMDRIVE%\Program Files\Git\bin\bash.exe" --login
Grault
25

Je préfère utiliser git-bash.exe au lieu de sh.exe.

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

Vous pouvez arrêter de fermer la fenêtre lors de l'appel /usr/bin/bash --login -ià la fin;

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

Remarque: je ne suis pas sûr que ce soit un bon moyen :)

kujiy
la source
4
Bonne réponse, mais la fenêtre git-bash se ferme immédiatement. Savez-vous comment désactiver la fermeture automatique après la fin de l'exécution de la commande?
Mark
@Mark Merci Mark. J'ai ajouté un exemple à ma réponse ci-dessus. Malheureusement, je ne sais pas comment nous devrions faire cela de la bonne manière car je ne suis pas une personne de Windows :)
kujiy
1
[code] start "" "% ProgramFiles% \ Git \ git-bash.exe" [/ code] fonctionne très bien!
PauAI
@PauAI 2018 maintenant ... J'ai essayé à start "" "%ProgramFiles%\Git\git-bash.exe"partir d'une ligne de commande administrateur, et bien que cela fasse apparaître Git Bash dans une nouvelle fenêtre, taper une commande simple comme lsne produit aucune sortie. Cette méthode ne semble pas autoriser l'exécution des commandes Linux. ... EDIT: A travaillé, a juste pris beaucoup de temps (2 minutes) pour exécuter ls. Puis ls a de nouveau couru en moins d'une seconde. ... bizarre.
Eric Hepperle - CodeSlayer2010
8

Je préfère, mettre git dans la variable d'environnement et appeler simplement

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

Étapes pour créer une variable d'environnement (Win7)

  • Depuis le bureau, cliquez avec le bouton droit sur l'icône Ordinateur.
  • Choisissez Propriétés dans le menu contextuel.
  • Cliquez sur le lien Paramètres système avancés.
  • Cliquez sur Variables d'environnement.
  • Dans la section Variables utilisateur, appuyez sur le bouton NOUVEAU, mettez le nom de la variable comme GIT_HOME, valeur comme (dossier-où-vous-avez-installé-git).

    • pour moi c'est l'était c:\tools\git, d'autres ont peut-êtreC:\Program Files\Git
  • recherchez la PATHvariable d'environnement et sélectionnez-la. Cliquez sur Modifier. (Si la variable d'environnement PATH n'existe pas, cliquez sur Nouveau).

  • Dans la fenêtre Modifier, ajoutez une nouvelle valeur %GIT_HOME%et %GIT_HOME%\bin. Cliquez sur OK. Fermez toutes les fenêtres restantes en cliquant sur OK.
  • [Assurez-vous de fermer le CMD que vous souhaitez utiliser pour git]
  • ouvrez une nouvelle invite de commande et tapez simplement shou bashougit-bash
vieux-moine
la source
2
Merci! J'ai pu faire fonctionner cela avec GIT_HOME en tant que C:\Program Files\Git, et en tapant à git-bashpartir de CMD. Aussi, étrangement, bien que vous n'ayez qu'à taper PATH pour voir son contenu, pour voir le contenu de cette variable personnalisée git, vous devez taperecho %GIT_HOME%
Eric Hepperle - CodeSlayer2010
Merci, c'était un excellent ajout. Pour ajouter à cela, lorsque vous avez la GIT_HOMEvariable et que vous utilisez la git-bashcommande (ou git-cmd) elle l'ouvrira dans une nouvelle fenêtre. Si vous ajoutez à la variable d'environnement "PATH", elle basculera dans cette fenêtre existante. Vous pouvez également taper exit"déconnexion" de git bash tout en conservant l'invite DOS.
Keith E. Truesdell
4
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login -i

Git bash s'ouvrira.

user3616334
la source
3

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

J'ai posté une réponse ici.

Ouvrez une fenêtre de commande Windows et exécutez ce script. S'il y a un changement dans votre répertoire de travail, il ouvrira un terminal bash dans votre répertoire de travail et affichera l'état actuel de git. Il garde la fenêtre bash ouverte, en appelant exec bash.

Si vous avez plusieurs projets, vous pouvez créer des copies de ce script avec un dossier de projet différent et l'appeler à partir d'un script batch principal.

RuntimeException
la source
3

J'ai utilisé les informations ci-dessus pour aider à créer une solution plus permanente. Ce qui suit va créer l'alias sh que vous pouvez utiliser pour ouvrir Git Bash:

echo @start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login > %systemroot%\sh.bat
dpate
la source
Merci dpate! J'ai collé votre instruction echo dans la ligne de commande shet j'ai couru et une fenêtre git-bash s'est lancée et j'ai pu exécuter des commandes parfaitement. Pouvez-vous ajouter un petit détail à votre réponse expliquant comment cela fonctionne? Je préfère apprendre comment fonctionne la pêche plutôt que de demander à quelqu'un de me donner un poisson, et je pense que cela profitera à d'autres à la recherche d'une bonne réponse. merci
Eric Hepperle - CodeSlayer2010
0

La réponse d'Endoro a vieilli et je suis incapable de commenter;

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

start "" "%ProgramFiles%\Git\bin\sh.exe" --login
ThaJay
la source
0

Vous pouvez ajouter un chemin git aux variables d'environnement

  • Pour x86

%SYSTEMDRIVE%\Program Files (x86)\Git\bin\

  • Pour x64

%PROGRAMFILES%\Git\bin\

Ouvrez cmd et écrivez cette commande pour ouvrir git bash

sh --login

Vous pouvez voir cette image GIF pour plus de détails:

https://media1.giphy.com/media/WSxbZkPFY490wk3abN/giphy.gif

Eng_Farghly
la source