Existe-t-il un moyen d'exécuter des scripts Bash sur Windows? [fermé]

100

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 sur Windows en installant des logiciels? Ce n'est pas grave si cela ne fonctionne pas à 100%, mais tant que la fonctionnalité la plus courante est disponible, elle devrait être excellente.

La tour
la source
3
@Rajish Pas plus…
msanford
1
@msanford, cela n'a pas de sens. Pourquoi ce fil est-il autorisé à vivre pendant que son doublon est fermé?
Pacerier
@Pacerier Le doublon a été supprimé, presque certainement par son auteur puisque les mods ont tendance à ne pas supprimer les questions. C'est probablement ce à quoi mon commentaire faisait référence. Je ne sais pas pourquoi l'auteur l'a supprimé. C'était aussi il y a 4 ans.
msanford

Réponses:

80

Installez Cygwin , qui inclut Bash parmi de nombreux autres utilitaires GNU et Unix (sans qui il est peu probable que bash soit de toute façon très utile).

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

Mise à jour : si quelqu'un est intéressé par cette réponse et exécute MS-Windows 10, veuillez noter que MS-Windows 10 dispose d'une fonctionnalité « Sous-système Windows pour Linux » qui, une fois activée, vous permet d'installer une image en mode utilisateur d'Ubuntu et puis lancez Bash là-dessus. Cela offre une compatibilité à 100% avec Ubuntu pour le débogage et l'exécution de scripts Bash, mais cette configuration est complètement autonome de Windows et vous ne pouvez pas utiliser de 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 la fonctionnalité DrvFS .

Guss
la source
2
Consultez la documentation du sous-système Windows pour Linux (WSL) pour plus d'informations.
stomie
1
WSL est devenu obsolète pour Windows 10 S maintenant ... :(
Javier García Manzano
2
Non obsolète, c'est juste l'une des fonctionnalités que vous n'obtiendrez pas si vous achetez la version moins chère de Windows " S mall edition". Il n'est pas non plus disponible dans l'édition familiale, IIRC.
Guss
Git vous permet d'exécuter facilement un fichier batch depuis n'importe où dans les fenêtres youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan
@MuhammadFaizanKhan - Le portage Git vers Windows, ainsi que quelques autres applications "orientées ligne de commande" (Github Desktop par exemple) sont également livrés avec un port Windows de Bash. Ce sont le plus souvent des ports MinGW (c'est-à-dire compilés en utilisant MinGW et MSYS pour la compatibilité Posix). Plus précisément, si vous regardez votre installation de Git pour Windows, vous verrez le mingw32répertoire qui contient essentiellement MSYS. Donc Git pour Windows est MinGW qui inclut Git (son facultatif dans le programme d'installation MSYS) avec un programme d'installation "plus agréable": superuser.com/a/1362301/10942
Guss
30

La meilleure option que j'ai pu trouver est Git Windows Il suffit de l'installer, puis de faire un clic droit et de cliquer sur "Git Bash Here" cela ouvrira une fenêtre bashentrez la description de l'image ici

Cela ouvrira une fenêtre bash comme celle-ci: entrez la description de l'image ici

et les commandes linux fonctionnent ...

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

Garvit Jain
la source
CECI - c'est si simple non?
Kalpesh Soni
yup really handy
Garvit Jain
4
Vous pouvez aussi simplement installer MinGW sans le gonflement supplémentaire de Git si tout ce que vous voulez, c'est son shell.
Stefan Z Camilleri
Vous pouvez regarder ce tutoriel d'une minute ici youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan
25

Si vous recherchez quelque chose d'un peu plus natif, vous pouvez utiliser getGnuWin32 pour installer tous les outils de ligne de commande Unix qui ont été portés. Cela plus winBash vous donne la plupart d'un environnement Unix de travail. Ajoutez console2 pour un meilleur émulateur de terminal et vous ne pourrez presque pas le dire sous Windows!

Cygwin est une meilleure boîte à outils dans l'ensemble, mais je me suis retrouvé à rencontrer des problèmes de surprise en raison du fossé entre celui-ci et Windows. Aucune de ces solutions n'est cependant aussi bonne qu'un système Linux natif.

Vous voudrez peut-être envisager d'utiliser virtualbox pour créer une machine virtuelle Linux avec la distribution de votre choix. Configurez-le pour partager un dossier avec le système d'exploitation hôte, et vous pouvez utiliser un véritable environnement de développement Linux et partager avec Windows. Faites juste attention à ces marqueurs EOL, ils vous attrapent à chaque fois.

Spencer Rathbun
la source
Ou CoLinux: colinux.org
Guss
colinux ne fonctionne pas (encore) sur 64 bits
hexicle
Quelqu'un connaît-il un successeur au projet win-bash? Il n'est plus activement développé et bloqué sur bash v 1.14 (bash proprement dit, à partir de ce post, est v 4.4)
Bjartr
@Bjartr Les gens de Microsoft ont ajouté une fonctionnalité permettant à une version native de bash de fonctionner sur Windows 7
Spencer Rathbun
@SpencerRathbun Cela ne fonctionnera que sur Windows 10, il se trouve que je suis sous Windows 7. Je ne sais pas non plus comment cela joue avec le mélange d'exécutables et de chemins Linux et Windows, donc ce n'est peut-être pas mieux (de mon point de vue) que cygwin bash .
Bjartr
11

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

Paul0515
la source
2
Non, pas les meilleures options. Vous exécutez simplement Linux de cette façon, pas bash IN Windows - vous ne pouvez pas lancer les exécutables Windows à partir de ce bash (à moins que vous ne contourniez le cbwinproblème avec ... mais c'est déjà trop compliqué pour une solution de contournement).
ankostis
La «meilleure» option est probablement une question de goût. Alors peut-être que vous avez raison. Cependant, cela me permet d'exécuter des scripts bash (enfin ... la plupart) sur mon PC Windows.
Paul0515
1
Vous pouvez exécuter virtuellement tous les scripts bash - tant qu'ils n'essaient pas d'interagir avec le système d'exploitation hôte (Windows). WSL bash est un sous-système de virtualisation léger qui peut exécuter les binaires ELF d' origine (c'est-à-dire Ubuntu) - mais vous ne pouvez pas y échapper!
ankostis
10

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

Michael Shopsin
la source
Quel package dois-je installer pour exécuter UNIX Shell dans Cygwin?
Tour du
@rFactor la page Cygwin comprend un programme d'installation Windows avec tous les composants nécessaires.
Spencer Rathbun
Le site Cygwin explique ce qui a été porté et comment l'installer. Si tout ce que vous voulez est un shell, l'installation de base de Cygwin devrait suffire.
Michael Shopsdu
9

Après avoir installé git-extendions ( https://code.google.com/p/gitextensions/ ), vous pouvez exécuter le fichier .sh à partir de l'invite de commande. (Non ./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 bash MinGW Git.

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

Simon Featherstone
la source
1
Je ne sais pas ce que sont git-extensions mais sa description dit que c'est une interface utilisateur graphique pour git. Comment exécuteriez-vous des scripts shell à partir de cet outil? Peut-être voulez-vous les exécuter avec msys bash qu'il inclut?
Miserable Variable
Juste pour confirmer - git-extensions inclut une copie de bash et la définit dans le chemin. J'ai essayé à bashpartir d'une instance PowerShell, échoué, installé des extensions git et réessayé et cela a fonctionné pour moi.
rtpHarry
4

Pour fonctionner en mode natif, vous devrez probablement utiliser Cygwin (dont je ne peux pas me passer lors de l'utilisation de 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 PORTER facilement des 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 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 parce que [quelqu'un, s'il vous plaît, corrigez-moi si je me trompe] Les utilitaires GnuWin doivent normalement être installés, alors que 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 shell CMD de base ne soit référencée (ainsi que les UnxUtils particuliers requis dans le dossier du projet pour que le script Batch 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 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 ensuite un binaire Windows contenant tous les fichiers de ce dossier spécifique, et utilisera le premier .bat qu'il rencontrera pour utiliser 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é quelques-uns de ces types de programmes et de nombreux binaires générés sont 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 nettoyés.

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

Je me rends compte que cela devient assez long, mais si je peux m'écarter 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% sur le format normal * NIX (/ usr / bin: / usr / sbin: / bin: / sbin), etc. et peut soit se lancer dans le shell Bash lui-même, soit lancer le plus puissant et joli émulateur de terminal MinTTY.

Il existe 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 cela se résume souvent à des préférences personnelles.

rubynorails
la source
1

Il y a 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 manière native.

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

vignes
la source
3
Le système POSIX sous Windows a été abandonné [1]. En cours de remplacement par le «sous-système Windows pour Linux» qui est basé sur le système de virtualisation léger «Drawbridge» pour exécuter Ubuntu-bash non modifié. Mais il y a quelques nuances, par exemple une fois dans ce système, vous ne pouvez plus appeler les exécutables Windows! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/…
ankostis
@ankostis, en fait, avec CU, vous pouvez ...
Paul0515