Raccourci de Windows pour exécuter le script git bash

en supposant que j'ai un test.sh script qui exécute un serveur et Git Bash installé, comment créer un raccourci Windows que je peux double-cliquer pour lancer tesh.sh en Git Bash au premier plan et me permet de voir la sortie du serveur?

35
demandé sur konyak 2014-02-05 01:51:55

4 réponses

Git bash est déjà un fichier batch avec un contenu similaire à celui-ci:

C:\WINNT\system32\cmd.exe /c ""C:\Git\bin\sh.exe" --login -i"

si vous voulez exécuter (et laisser exécuter) un script shell dans le contexte du shell, spécifiez-le à la ligne de commande. L'astuce est que lorsque le nom du fichier script est interprété, il utilise le chemin Windows , pas le chemin équivalent dans l'environnement sh/Git.

En d'autres termes, pour exécuter le fichier D:\temp\test.sh dans l'interpréteur de commandes Git et laissez-le tourner, créez ce fichier par lots:

C:\WINNT\system32\cmd.exe /c ""C:\Git\bin\sh.exe" --login -i -- D:\temp\test.sh"

d'un autre côté, si vous voulez exécuter un script et récupérer votre shell , vous devez:

  1. ouvrir la coque telle quelle
  2. éditer ou créer ~/.profile (essayer vi ~/.profile )
  3. ajouter cette ligne: ~/test.sh (modifier le chemin si nécessaire)

donc avec un .profile qui ressemble à ceci:

echo Executing .profile
/bin/sh ~/test.sh

et test.sh qui ressemble à ceci:

echo Hello, World!

vous obtiendrez ce prompt:

Welcome to Git (version 1.7.11-preview20120710)


Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.
Executing .profile
Hello, World!

ixe013@PARALINT01 ~
$
57
répondu ixe013 2014-02-05 15:38:35

D'autres réponses fonctionnent, mais il y a une solution plus courte, qui répond pleinement à la question , qui était:

Comment créer un raccourci Windows que je peux double cliquer pour lancer tesh.sh in Git Bash

la réponse est: ajouter la commande suivante au champ Target: du raccourci:

"C:\Git\bin\sh.exe" -l "D:\test.sh"

enter image description here

où, -l est le diminutif de --login .

pour mieux comprendre ce que fait cette commande, consultez les documents officiels de GNU sur invoquant Bash :

  • -l ( --login ): faites que ce shell agisse comme s'il avait été invoqué directement par login. Quand le shell est interactif, c'est l'équivalent de démarrer un shell de connexion avec exec -l bash . Quand la coquille est pas interactif, les fichiers de démarrage de l'interpréteur de commandes seront exécutés. exec bash -l ou exec bash --login remplacera l'actuel shell avec un shell Bash login.

notez Également que:

  • soit vous avez besoin du chemin complet vers sh.exe soit vous l'avez dans votre variable d'environnement PATH (comme d'autres l'ont déjà souligné).
  • si vous avez vraiment besoin de forcer l'invocation de l'interpréteur de commandes en mode interactif, vous pouvez ajouter l'option -i 1519400920"
  • Le dernier paramètre est le chemin d'accès au script doit être exécuté. Ce chemin doit être au format Windows.
19
répondu quasoft 2016-02-28 16:58:40

je recommande d'utiliser la variable d'environnement %ComSpec% , au lieu du chemin absolu à cmd :

%ComSpec% /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i"

ou tout simplement cmd commande, qui est habituellement disponible à partir de % PATH% :

cmd /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i"

si votre C:\Program Files (x86)\Git\bin ajouté à PATH (qui est également une solution courante et l'un des cas sur TortoiseGit installation), vous pouvez utiliser juste:

cmd /c "sh --login -i"
5
répondu radistao 2016-02-28 21:41:18

meilleure solution à mon avis:

invoque le shell droit, pas de fenêtres inutiles et invoque ensuite un script bash; la fenêtre restera ouverte après la sortie du script:

  • créer un raccourci à mintty.exe sur votre bureau, par exemple

  • Modifier les propriétés du raccourci et changer la cible (garder la chemin):

"C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'

explication des paramètres:

-h always garde la fenêtre ouverte lorsque le script est terminé, de sorte que la fenêtre ne disparaîtra pas pendant que vous êtes encore en train de lire la sortie (retirez si vous n'avez pas besoin de lire la sortie et voulez que la fenêtre se ferme automatiquement).

-l fait de ce shell agir comme s'il avait été directement invoqué par login.

-e sort immédiatement si un pipeline retourne un statut non-zéro ( more info ).

4
répondu Hannes Schneidermayer 2018-03-28 10:43:26