web-dev-qa-db-fra.com

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 tout système 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 certains logiciels? Ce n'est pas grave si ça ne marche pas à 100%, mais tant que la fonctionnalité la plus commune est disponible, ça devrait être génial.

91
Tower

Installez Cygwin , qui inclut Bash parmi beaucoup d’autres GNU et Unix (sans qui il est improbable que bash soit de toute façon très utile)).

Une autre option est MSJS de MinGW qui inclut bash et un ensemble plus petit des utilitaires les plus importants tels que awk. Personnellement, j'aurais préféré Cygwin, car il inclut des outils de levage lourds tels que Perl et Python dont je ne peux pas vivre, alors que MSYS écrase ceux-ci et suppose que vous allez les installer vous-même.

Mis à jour : Si vous êtes intéressé par cette réponse et que vous exécutez MS-Windows 10, veuillez noter que MS-Windows 10 dispose du caractère " Windows Sous-système pour Linux "fonctionnalité qui - une fois activée - vous permet d'installer une image d'Ubuntu en mode utilisateur, puis d'exécuter Bash sur celle-ci. Ceci fournit une compatibilité à 100% avec Ubuntu pour le débogage et l’exécution de scripts Bash, mais cette configuration est totalement autonome à partir de Windows et vous ne pouvez pas utiliser les scripts Bash pour interagir avec les fonctionnalités de Windows (telles que les processus et les API), sauf pour un accès limité aux fichiers via - DrvFS fonctionnalité.

73
Guss

Si vous cherchez quelque chose d'un peu plus natif, vous pouvez utiliser getGnuWin32 pour installer tous les outils de ligne de commande Unix portés. Cela plus (WinBash ) vous donne la plupart d'un environnement de travail Unix. Ajoutez console2 pour un meilleur émulateur de terminal et vous ne pourrez presque plus rien dire sur Windows!

Cygwin est globalement une meilleure boîte à outils, mais je me suis heurté à des problèmes de surprise en raison de la fracture qui le sépare de Windows. Aucune de ces solutions n’est aussi performante qu’un système Linux natif.

Vous voudrez peut-être envisager d’utiliser virtualbox pour créer un linux VM avec la distribution de votre choix. Configurez-le pour partager un dossier avec l’OS hôte, et vous pourrez utilisez un véritable environnement de développement Linux et partagez-les avec Windows. Faites attention à ces marqueurs EOL, ils vous en procureront à chaque fois.

24
Spencer Rathbun

La meilleure option que j'ai pu trouver est Git Windows Il suffit de l'installer puis de cliquer avec le bouton droit de la souris sur "Git Bash Here" pour ouvrir une fenêtre bash enter image description here

Cela ouvrira une fenêtre bash comme ceci: enter image description here

et les commandes linux fonctionnent ...

J'ai essayé les commandes 'sh', 'vi', 'ssh', 'curl', etc ...

17
Garvit Jain

Vous pouvez toujours installer Cygwin pour exécuter un shell Unix sous Windows. J'ai beaucoup utilisé Cygwin avec Windows XP.

10
Michael Shopsin

Après avoir installé git-extensionions ( https://code.google.com/p/gitextensions/ ), vous pouvez exécuter le fichier .sh à l'aide de la commande Invite. (N ° ./script.sh requis, exécutez-le simplement comme un fichier bat/cmd) ou vous pouvez les exécuter dans un environnement bash "complet" en utilisant le shell MinGW Git bash.

Je ne suis pas un grand fan de Cygwin (oui, je suis sûr que c'est vraiment puissant), alors lancez des scripts bash sous Windows sans avoir à l'installer parfaitement pour moi.

9
Simon Featherstone

Meilleure option? Windows 10. Prise en charge de Native Bash!

8
Paul0515

Pour fonctionner en mode natif, vous devrez probablement utiliser Cygwin (sans lequel je ne peux pas vivre sans utiliser Windows). Donc, dès le départ, +1 pour Cygwin. N'importe quoi d'autre serait barbare.

CEPENDANT, cela étant dit, j’ai récemment commencé à utiliser une combinaison d’utilitaires pour mettre en PORT des scripts Bash facilement vers Windows, afin que mes collègues anti-Linux puissent exécuter facilement des tâches complexes mieux gérées par GNU .

Je peux généralement porter un script Bash sur Batch en très peu de temps en ouvrant le script d'origine 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 en raison du fait que [quelqu'un me corrige si je me trompe]. Les utilitaires GnuWin doivent normalement être installés, alors qu'UnxUtils sont des binaires autonomes qui fonctionnent tout simplement.

Cependant, CoreUtils n'inclut pas certains utilitaires * NIX connus, tels que cURL, é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 de sorte qu'aucune commande autre que les commandes CMD Shell de base ne soit référencée (ainsi que le type UnxUtils requis dans le dossier du projet pour que le script de traitement par lots fonctionne comme prévu).

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

Le programme Bat2Exe est l'endroit où la magie opère. Une fois votre fichier batch terminé et testé avec succès, lancez Bat2Exe.exe et spécifiez 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 fichier .bat qu’il rencontrera comme fichier exécutable principal. Vous pouvez même inclure un fichier .ico à utiliser comme icône du fichier .exe final généré.

J'ai essayé quelques-uns de ces types de programmes et la plupart des fichiers binaires générés sont signalés comme des logiciels malveillants. Cependant, la version de Bat2Exe à laquelle j'ai fait référence fonctionne parfaitement et les fichiers .exe générés sont entièrement propres.

L'exécutable résultant peut être exécuté de manière interactive en double-cliquant ou depuis la ligne de commande avec des paramètres, etc., exactement comme un fichier Batch normal, sauf que vous pourrez utiliser les fonctionnalités de la plupart des outils que vous utiliserez normalement. dans Bash.

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

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 poste et cela revient souvent à des préférences personnelles.

3
rubynorails

Il existe encore une possibilité théorique de le faire: les versions professionnelles de Windows ont un support POSIX intégré, ainsi bash aurait pu être compilé pour Windows de manière native.

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

1
vines