web-dev-qa-db-fra.com

Raccourci Windows pour exécuter un script Git Bash

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

38
konyak

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 tourner) un script Shell dans le contexte du Shell, spécifiez-le sur la ligne de commande. L'astuce est que lorsque le nom du fichier de 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 le Git Shell et laissez-le fonctionner, créez ce fichier batch:

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. Ouvrez le shell tel quel
  2. Modifiez ou créez ~/.profile (essayez vi ~/.profile)
  3. Ajoutez cette ligne: ~/test.sh (ajustez 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 cette invite:

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 ~
$
62
ixe013

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

Comment créer un raccourci Windows que je peux double-cliquer pour exécuter tesh.sh dans Git Bash

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

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

enter image description here

Où, -l est l'abréviation de --login.

Pour mieux comprendre ce que fait cette commande, consultez les documents officiels GNU about Invoking Bash :

  • -l (--login): Faites en sorte que ce Shell agisse comme s'il avait été directement invoqué par la connexion. Lorsque le shell est interactif, cela revient à démarrer un shell de connexion avec exec -l bash. Lorsque le shell n'est pas interactif, les fichiers de démarrage du shell de connexion sont exécutés. exec bash -l ou exec bash --login remplacera le shell actuel par un shell de connexion Bash.

Notez également que:

  • Soit vous avez besoin du chemin complet vers sh.exe ou l'avoir dans votre variable d'environnement PATH (comme d'autres l'ont déjà souligné).
  • Si vous devez vraiment forcer l'invocation de Shell en mode interactif, vous pouvez ajouter le -i option
  • Le dernier paramètre est le chemin d'accès au script qui doit être exécuté. Ce chemin doit être au format Windows.
21
quasoft

La meilleure solution à mon avis:

  • Invoque le bon shell
  • Pas de fenêtres inutiles
  • Appelle ensuite un script bash
  • La fenêtre restera ouverte après la sortie du script

Procédez comme suit:

  1. Créez un raccourci vers mintty.exe sur votre bureau, par exemple. Il se trouve sous %installation dir%/Git/usr/bin/mintty.exe

  2. Modifier les propriétés du raccourci et changer la cible (garder le 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 maintient la fenêtre ouverte lorsque le script est terminé, de sorte que la fenêtre ne disparaîtra pas pendant que vous lisez la sortie (supprimez-la si vous n'avez pas besoin de lire la sortie et que vous souhaitez que la fenêtre se ferme automatiquement).

-l fait en sorte que ce Shell agisse comme s'il avait été directement invoqué par connexion.

-e se ferme immédiatement si un pipeline retourne un état non nul ( plus d'informations ).

7

Je recommande d'utiliser la variable d'environnement %ComSpec%, Au lieu du chemin absolu vers cmd:

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

ou même simplement la commande cmd, qui est généralement 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ée à PATH (qui est également une solution courante et l'un des cas sur TortoiseGit installation) vous pouvez utiliser simplement:

cmd /c "sh --login -i"
5
radistao