142 votes

Existe-t-il un moyen d'exécuter des scripts Bash sous Windows ?

J'ai acheté et j'utilise Windows 7 Ultimate, et j'aime l'utiliser pour développer des applications. L'un des inconvénients (comme avec tous les systèmes d'exploitation) est que je ne peux pas exécuter de scripts Bash. Existe-t-il un moyen d'exécuter des scripts Bash sous Windows en installant un logiciel ? Ce n'est pas grave si cela ne fonctionne pas à 100%, mais tant que les fonctionnalités les plus courantes sont disponibles, cela devrait être parfait.

3 votes

@Rajish Plus maintenant

0 votes

1 votes

@msanford, Cela n'a pas de sens. Pourquoi ce fil de discussion est-il autorisé à vivre alors que son duplicata est fermé ?

11voto

Après avoir installé git-extentions ( http://gitextensions.github.io/ ) vous pouvez exécuter le fichier .sh à partir de l'invite de commande. (Pas de ./script.sh nécessaire, exécutez-le simplement comme un fichier bat/cmd). Ou vous pouvez les exécuter dans un environnement bash "complet" en utilisant le shell bash de MinGW Git.

Je ne suis pas un grand fan de Cygwin (oui, je suis sûr qu'il est vraiment puissant), donc exécuter des scripts bash sur Windows sans avoir à l'installer est parfait pour moi.

7voto

rubynorails Points 499

Pour un fonctionnement en mode natif, vous devrez probablement utiliser Cygwin (dont je ne peux me passer lorsque j'utilise Windows). Donc, d'emblée, +1 pour Cygwin. Toute autre solution serait incivile.

CEPENDANT, j'ai récemment commencé à utiliser une combinaison d'utilitaires pour porter facilement les scripts Bash vers Windows afin que mes collègues anti-Linux puissent facilement exécuter des tâches complexes qui sont mieux gérées par les utilitaires GNU.

Je peux généralement porter un script Bash vers Batch en très peu de temps en ouvrant le script original dans un volet et en écrivant un fichier Batch dans l'autre volet. Les outils que j'utilise sont les suivants :

Je préfère UnxUtils à GnuWin32 parce que [quelqu'un peut me corriger si je me trompe] les utilitaires de GnuWin doivent normalement être installés, alors qu'UnxUtils sont des binaires autonomes qui fonctionnent tout simplement.

Cependant, les CoreUtils n'incluent pas certains utilitaires *NIX familiers tels que cURL, qui est également disponible pour Windows (curl.haxx.se/download.html).

Je crée un dossier pour les projets, et toujours SET PATH=. dans le fichier .bat afin qu'aucune autre commande que les commandes de base du shell CMD ne soit référencée (ainsi que les UnxUtils particuliers requis dans le dossier du projet pour que le Batch script fonctionne comme prévu).

Ensuite, je copie les fichiers CoreUtils .exe nécessaires dans le dossier du projet et je les référence dans le fichier .bat comme ". \curl.exe -s google.com", etc.

C'est dans le programme Bat2Exe que la magie opère. Une fois que votre fichier Batch est complet et qu'il a été testé avec succès, lancez Bat2Exe.exe, et indiquez le chemin d'accès au dossier du projet. Bat2Exe créera alors un binaire Windows contenant tous les fichiers de ce dossier spécifique, et utilisera le premier .bat qu'il rencontrera comme exécutable principal. Vous pouvez même inclure un fichier .ico à utiliser comme icône pour le fichier .exe final généré.

J'ai essayé plusieurs programmes de ce type, et beaucoup des binaires générés ont été signalés comme des logiciels malveillants, mais la version de Bat2Exe que j'ai référencée fonctionne parfaitement et les fichiers .exe générés sont complètement propres.

L'exécutable qui en résulte peut être exécuté de manière interactive en double-cliquant, ou à partir de la ligne de commande avec des paramètres, etc., tout comme un fichier Batch ordinaire, sauf que vous pourrez utiliser la fonctionnalité de nombreux outils que vous utiliserez normalement dans Bash.

Je me rends compte que cela devient assez long, mais si je peux me permettre une petite digression, j'ai également écrit un script Batch que j'appelle PortaBashy que mes collègues peuvent lancer à partir d'un partage réseau qui contient une installation Cygwin portable. Il définit alors la variable %PATH% au format *NIX normal (/usr/bin:/usr/sbin:/bin:/sbin), etc. et peut soit lancer le shell Bash lui-même, soit lancer l'émulateur de terminal MinTTY, plus puissant et plus joli.

Il y a toujours de nombreuses façons d'accomplir ce que vous essayez de faire ; il s'agit simplement de combiner les bons outils pour le travail, et bien souvent, cela se résume à une préférence personnelle.

4voto

vines Points 3649

Il existe une autre possibilité théorique de le faire : les versions professionnelles de Windows ont un support POSIX intégré, donc bash aurait pu être compilé pour Windows de façon native.

Dommage, mais je n'ai toujours pas trouvé de compilateur moi-même...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X