web-dev-qa-db-fra.com

Exécuter des commandes à partir du fichier .bat sur le terminal Git Bash

Je suis débutant à Git bash.

Juste par curiosité en essayant de créer un fichier .bat contenant des commandes (je ne sais pas si Git Bash prend en charge le fichier .bat)

Ce que je veux réaliser, c'est simplement faire glisser et déposer ce fichier .bat sur le terminal Git Bash et exécuter les commandes du fichier (est-ce possible?).

Mes commandes dans le fichier .bat

cd "C:\Users\USER\abc\xyz"
cd "C:\Users\USER\abc\xyz\pqr"
export HOME="C:\Users\USER\some_directory"
export HOME2="C:\Program Files\directoy"
16
Shabbir Panjesha

Ce que je veux réaliser, c'est simplement faire glisser et déposer ce fichier .bat sur le terminal Git Bash et exécuter les commandes du fichier (est-ce possible?).

Ce n'est pas possible, et ne le sera probablement jamais, car ce n'est pas un UX naturel. Faire glisser un fichier depuis un explorateur de fichiers vers un terminal Git Bash devrait produire le chemin absolu vers le fichier dans le terminal. Vous pouvez ensuite appuyer sur Entrée pour l'exécuter. La manière naturelle d'exécuter un fichier dans un explorateur de fichiers consiste à double-cliquer dessus. (L'explorateur de fichiers peut nécessiter une configuration pour permettre l'exécution des fichiers .bat Et .sh En double-cliquant.)

Mes commandes dans le fichier .bat

cd "C:\Users\USER\abc\xyz"
cd "C:\Users\USER\abc\xyz\pqr"
export HOME="C:\Users\USER\some_directory"
export HOME2="C:\Program Files\directoy"

D'une part, ce script semble artificiel: cd /some/abs/path Suivi de cd /some/other/abs/path Est une déclaration inutile.

Par ailleurs, l'extension .bat Doit être utilisée pour les scripts Shell DOS, mais la commande export n'existe pas sous DOS (elle existe dans Bash). Votre exemple devrait donc être un script .sh, Et non un script .bat.

Enfin, il est important de comprendre la distinction entre exécution un script et sourcing un script:

  • Lorsque vous exécutez un script, par exemple avec path/to/script.sh, Les commandes qu'il contient sont exécutées dans un processus enfant. En tant que telles, les commandes qui modifient l'environnement d'exécution, telles que la modification du répertoire ou des variables, s'appliqueront uniquement au processus enfant. En d'autres termes, l'effet des commandes cd et export ne sera pas visible à la fin du script.

  • Lorsque vous source un script, par exemple avec source path/to/script.sh (Ou . path/to/script.sh), Les commandes qu'il contient sont exécutées dans le processus en cours. En tant que telles, les commandes qui modifient l'environnement d'exécution, telles que la modification du répertoire ou des variables, s'appliqueront au processus en cours.

En d'autres termes, si vous voulez que les commandes cd et export aient un effet dans le shell actuel, vous voulez alors source le script, au lieu de l'exécuter.

9
janos

Vous pouvez exécuter des fichiers batch uniquement à partir de git bash, par exemple.

 ./clear.bat 

De Hors d'une console git: comment puis-je exécuter un fichier batch, puis revenir à la console git?