2013-06-15 11:48:25 +0000 2013-06-15 11:48:25 +0000
55
55

Comment puis-je utiliser un shell de type Bash-like sur Windows ?

J'utilise Linux et un Mac, et j'enseignerai bientôt des trucs en ligne de commande.

Que puis-je installer sur Windows pour me donner une fenêtre de terminal très similaire à un shell Bash Mac/Linux de base ?

J'aimerais pouvoir définir des alias .bash_ aussi bien que possible.

Réponses (8)

48
48
48
2016-03-30 19:45:06 +0000

Vous pouvez maintenant installer le sous-système Windows pour Linux qui vous permet de exécuter le shell et les outils Linux en mode utilisateur natif sur Windows. Cela vous permet d'exécuter le shell Bash directement sur Windows et est basé sur Ubuntu.

Cette fonction a été introduite dans Windows 10 avec la mise à jour anniversaire (2016) et n'est pas activée par défaut. Pour activer la nouvelle fonctionnalité sur une machine Windows 10 Anniversary Update, procédez comme suit :

  1. naviguez vers Paramètres -> Mise à jour et sécurité -> Pour les développeurs et sélectionnez “Mode développeur”
  2. Panneau de configuration -> Programmes et fonctionnalités et cliquez sur “Activer ou désactiver les fonctionnalités de Windows” dans le panneau supérieur gauche
  3. Dans la boîte de dialogue, cochez “Windows Subsystem for Linux” et cliquez sur Ok
  4. Redémarrez la machine
  5. Cherchez “bash” et cliquez dessus, il devrait ouvrir une invite de commande et vous demander si vous voulez installer “Ubuntu sur Windows”, continuez avec “y”
  6. Après l'installation, il vous demandera de créer un nom d'utilisateur et un mot de passe UNIX
  7. Vous êtes maintenant prêt à utiliser le shell bash

Un peu d'histoire, en 2015 le projet Astoria a été lancé pour apporter des applications Android à Windows et ils ont construit un sous-système Linux appelé Windows Subsystem for Linux (WSL) à cet effet. Finalement, le projet Astoria a été abandonné car il compromettait leur stratégie UWP (Universal Windows Platform), mais certaines parties ont été conservées et constituent la base de bash for Windows. Au cours de ce projet, Microsoft a collaboré avec Canonical (créateurs d'Ubuntu Linux) pour leur fournir une image native avec tous les outils/binaires supportés.

Plus d'informations disponibles ici, https://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-on-ubuntu-on-windows-download-now-3/ https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/ https://sec.ch9.ms/sessions/build/2016/P488.mp4 (vidéo)

42
42
42
2013-06-15 11:50:58 +0000

Vous pouvez installer Cygwin ou MSYS/MinGW , ou vous pouvez installer une distribution Linux complète dans une machine virtuelle (par exemple, en utilisant VirtualBox ).

21
21
21
2017-05-09 14:27:32 +0000

Voici une liste des options disponibles à partir de 2018-05 avec de nombreuses mises à jour concernant le WSL à partir de 2020-01 ainsi qu'un peu de détails concernant chacune d'entre elles.

Options qui se démarquent

* Sous-système Windows pour Linux(WSL) **

WSL est de plus en plus mature (Microsoft a abandonné le beta warning il y a longtemps) et est très facile à installer, donc dans la plupart des cas c'est une très bonne (sinon la meilleure) option. Il résout le problème en utilisant une méthode différente de la plupart des autres options. Vous exécutez exactement le même code binaire que celui que vous exécuteriez sur un système Linux. Jusqu'en 2020-01, le WSL intercepte les appels du noyau et les traduit en appels du noyau Windows (pensez à l'inverse de Wine). Cela va changer puisque la version bêta actuelle du WSL fait tourner un vrai noyau linux dans une VM légère.

Quoi qu'il en soit, avec le WSL, vous obtenez un joli shell avec presque tous les goodies CLI que vous vous attendez à trouver sur une installation Ubuntu de série et l'option à apt install presque tout ce qui est disponible dans les dépôts. Microsoft déclare officiellement que “WSL n'a pas pour but de prendre en charge les ordinateurs de bureau ou les applications à interface graphique” cependant, il existe des instructions non officielles sur la manière de le faire. Il semble que dans l'état actuel des choses (2020-01), les principaux inconvénients du WSL sont les suivants :

Voici une vieille mais belle comparaison avec cygwin (notez que Rich Turner est un membre de l'équipe WSL et qu'il a posté de nombreuses informations utiles concernant le WSL)

Cygwin et Babun

Cygwin fournit ce qui suit :

  1. un shell bash et le terminal Mintty,
  2. une vaste gamme d'utilitaires Linux courants compilés pour fonctionner sous Windows
  3. une couche de compatibilité complète qui permet aux programmes Linux de fonctionner sous Windows.

Cygwin vise à faciliter le portage des applications Linux sur Windows. Si un programme en C a été conçu pour Unix et prévoit d'utiliser des fonctionnalités telles que les tuyaux, l'accès aux fichiers et aux répertoires de style Unix e.t.c., alors vous pouvez le compiler pour Cygwin et Cygwin agira comme une couche de compatibilité entre le code et le système d'exploitation foreign (Windows). Cela permet au même programme C de fonctionner à la fois sous Linux et Windows avec peu ou pas de modifications. Une énorme liste de programmes Linux a ainsi été respectée et peut être exécutée lorsque vous installez Cygwin. Cependant, vous, l'utilisateur de ces programmes, devra probablement être familier avec Unix. Par exemple, vous devrez peut-être passer des arguments comme /cygdrive/c/autoexec.bat au lieu de c:\autoexec.bat et être prêt à traiter la sortie avec une terminaison de ligne Unix (\n) au lieu d'une terminaison de ligne Windows (\r\n).

La collection de tous les programmes Cygwin comprend un dépôt et bien que Cygwin ne dispose pas d'un gestionnaire de paquets Linux traditionnel, vous pouvez ajouter, supprimer et mettre à jour des programmes de ce dépôt à tout moment d'une manière très contre-intuitive (vous exécutez le setup de Cygwin. exe à tout moment après que l'installation soit terminée)

  • Babun ** c'est Cygwin avec un gestionnaire de paquets complet (pact), oh-my-zsh pour son shell, git, les mises à jour automatiques et une architecture orientée plug-in. Bien que le shell par défaut soit zsh, vous pouvez facilement passer à bash. Il semble que ce soit une belle mise à jour de Cygwin vanille si vous n'êtes pas gêné par le poids supplémentaire.

Mingw-w64

Mingw-w64 fournit ce qui suit :

  1. un shell bash,
  2. une bonne quantité d'utilitaires Linux,
  3. une chaîne d'outils de développement SW pour construire des applications qui fonctionneront sans couche de compatibilité Linux (ou avec une couche minimale).

MinGW est principalement une distribution de logiciels et une plate-forme de construction pour Windows. C'est notamment un portage Windows des outils du compilateur GNU, tels que GCC, make, bash, etc. Il comprend une bonne quantité d'outils GNU et une couche de compatibilité Unix minimale.

La principale différence entre Mingw-w64 et Cygwin réside dans les priorités : Cygwin vise à fournir une couche de compatibilité POSIX complète comprenant une implémentation complète de tous les principaux appels système et bibliothèques Unix ; la performance est secondaire à la compatibilité. MinGW vise la performance, de sorte qu'il ne fournira pas certaines API POSIX qui ne peuvent pas être mises en œuvre facilement et/ou assez rapidement sous Windows. Les développeurs S/W sont également la cible principale de MinGW. Néanmoins, les utilisateurs occasionnels peuvent également apprécier son shell et les utilitaires généraux inclus.

MSYS2 et Git for Windows

MSYS2 fournit ce qui suit :

  1. un shell bash et le terminal Mintty,
  2. une quantité importante d'utilitaires Linux,
  3. un gestionnaire de paquets en ligne de commande complet pour installer les programmes du système d'exploitation
  4. des parties de Cygwin et MinGW pour prendre en charge la création d'applications avec ou sans couche de compatibilité Linux complète.
  5. un dépôt de logiciels et un gestionnaire de paquets (pacman) qui facilite l'installation, l'utilisation, la construction et le portage de logiciels sous Windows.

MSYS2 est également principalement une distribution de logiciels et une plate-forme de construction pour Windows comme MinGW, mais elle combine à la fois la manière de Cygwin et la manière de MinGW. Vous pouvez utiliser MSYS2 pour créer soit “programmes MinGW” soit “programmes MSYS2”. Ce dernier lien vers la couche de compatibilité de MSYS2 (msys-2.dll) qui suit elle-même de près le développement de la couche de compatibilité de Cygwin avec quelques ajouts/modifications . Les dépôts des 2 projets ne sont cependant pas du tout liés. Ainsi, bien que MSYS2 et Cygwin fournissent tous deux grep.exe ils peuvent avoir une version complètement différente.

  • Git pour Windows ** est soit juste MSYS2 avec git installé, soit au moins fortement basé sur MSYS2 . Il fournit le même shell (bash), terminal (Mintty) et gestionnaire de paquets (pacman). Il semble que ce soit le moyen le plus populaire de faire fonctionner le Git dominant sous Windows et, avec lui, vous obtenez un environnement Unix agréable.

Terrain d'entente

Sauf pour le WSL, la plupart des outils ci-dessus partagent beaucoup de technologies communes (bibliothèques, exécutables, concepts). Par exemple, le shell bash fourni avec MinGW dépend de msys-2.dll qui est lui-même un fork de cygwin.dll. Donc oui, il y a beaucoup de place pour la confusion :-)

Plus d'options

  • Cmder ** fournit juste un joli terminal et un shell de type bash pour Windows. Son composant principal est * Conemu ** (le terminal). En plus de cela, il ajoute Clink qui fournit une puissante édition en ligne de commande de style bash, une mise en page personnalisée de l'invite et le schéma de couleurs Monokai. Il est hautement (ou peut-être entièrement) compatible avec les programmes natifs de la console Windows.

  • Scoop ** fournit un gestionnaire de paquets en ligne de commande pour de nombreux programmes multiplateformes bien connus, y compris de nombreux outils GNU. Il permet de télécharger des paquets pré-compilés. Il ne fournit ni shell ni terminal mais fonctionne sous cmd.exe de Windows (avec toutes ses limitations mais aussi avec sa compatibilité totale avec les programmes natifs de la console Windows). Il ne comprend pas non plus de suite de compilateurs (mais bien sûr, les compilateurs et les outils de développement sont des paquets typiques que vous pouvez installer avec scoop). Beaucoup de programmes installés par Scoop proviennent directement du projet MinGW/MSYS ou ont été construits avec leurs outils.

Encore plus d'options

Les solutions ci-dessous ne semblent pas actives et je ne les ai jamais testées mais elles semblent faire le travail pour les autres :

  • Gow ** (Gnu On Windows) est l'alternative légère à Cygwin sans shell. Il utilise un installateur Windows pratique qui installe environ 130 applications Linux à source ouverte extrêmement utiles, compilées sous forme de binaires win32 natifs et disponibles via le fichier cmd.exe de Windows. Il est conçu pour être aussi petit que possible (environ 10 Mo).

  • UnxUtils & GnuWin32 ** : UnxUtils est un ensemble de portages d'utilitaires courants de type GNU Unix sur Win32 natif, dont les exécutables dépendent uniquement du fichier msvcrt.dll de Microsoft C-runtime. Vous devez télécharger la partie principale et quelques mises à jour . GnuWin32 a des versions plus récentes que UnxUtils, mais nécessite des fichiers de support (par exemple des DLL)

MSYS & MinGW semblent avoir été obsolètes par MSYS2 & MinGW-W64 donc je ne les ai jamais regardés.

Quelques problèmes communs sur Cygwin & MSYS2

Concernant le terminal

Mintty est le terminal utilisé dans Cygwin, MSYS2 et leurs dérivés. Il faut savoir que si vous exécutez des programmes de console natifs de Windows, il ne remplace pas sans peine l'invite de commande de Windows. Alors que les programmes avec une simple sortie texte fonctionnent généralement bien, les programmes interactifs et plein écran ont souvent des problèmes. Lisez more on Mintty’s home page et lisez également l'entrée “Some native console programs don’t work when run from Git Bash” sur Git for Windows FAQ . Cette entrée contient les recommandations suivantes lorsque vous êtes confronté à ce genre de problèmes :

Il existe plusieurs méthodes pour contourner ces problèmes :

  • Exécuter les programmes qui ont des problèmes en utilisant l'utilitaire winpty . Cela vous permet de continuer à utiliser le terminal mintty, plus agréable, mais peut devenir difficile à utiliser si vous avez besoin d'une solution de contournement pour de nombreux programmes.
  • [utilisez cmd.exe] et configurez-le pour “Quick Edit”, une taille et un défilement raisonnables et une police de caractères unicode adaptée. Vous devrez quand même vivre avec les autres bizarreries de [cmd.exe].
  • Installez et utilisez Conemu .

Autres problèmes

Les deux choses les plus importantes à garder à l'esprit sont les suivantes :

  1. il y a un échange entre le pouvoir et les problèmes difficiles à déboguer. Plus la solution est puissante, plus les choses peuvent mal tourner, même d'une manière qui, au départ, semblera sans rapport avec votre couche Linux.

  2. Si vous n'avez pas beaucoup d'expérience de Linux, n'utilisez pas les solutions les plus puissantes comme Cygwin/MSYS2/MinGW

UnxUtils et GnuWin32 sont les moins puissantes mais aussi les moins susceptibles de vous causer des maux de tête. Cygwin et les autres solutions similaires sont les plus puissantes et les plus efficaces pour les maux de tête. Cmder se situe quelque part au milieu. Donc lorsque vous avez besoin des solutions les plus puissantes, dormez bien et soyez pleinement concentré. Évitez d'utiliser des solutions puissantes pendant que vous testez quelque chose de nouveau et éventuellement instable. N'oubliez pas non plus que les solutions de complexité moyenne comme le cmder ne sont pas sans tache.

Le problème des commandes Linux qui masquent celles des fenêtres est une cause fréquente de problèmes difficiles à déboguer dans des solutions comme Cygwin/MSYS2/MinGW. En voici un exemple : J'avais un fichier .bat qui utilisait la commande timeout. Lorsqu'il était exécuté sous Cygwin, il échouait car la commande timeout est également une commande Linux mais avec une syntaxe différente. Après avoir repéré le problème, j'ai découvert que je pouvais ajouter un PATH=… en haut du fichier .bat pour m'assurer que la commande Windows avait la priorité. Mais ensuite, j'ai eu une erreur “Input redirection is not supported” encore plus cryptique et je me suis contenté d'une solution de contournement avant d'en trouver la raison.

Voici un exemple de problème avec cmder. Je faisais tourner la version Windows de Unison sous Cmder et dans certaines conditions spéciales, elle fonctionnait avec absolument aucun message d'erreur. La même commande fonctionnait toujours parfaitement sous cmd.exe. Ce qui est amusant, c'est qu'elle fonctionnait aussi parfaitement sous Cygwin (en fait, si vous avez des noms de fichiers Unicode, un terminal Cygwin est mieux que cmd.exe car cmd.exe affiche souvent un texte Unicode malformé).

A propos de ce guide

Au cours de l'année 2017-05, j'en ai eu assez de ne pas comprendre les différences entre les outils ci-dessus, bien que j'en utilise certains depuis longtemps (principalement CygWin et cmder, mais jamais à des fins de développement). J'ai donc passé quelques heures à tâter le terrain. Ce guide est le résultat des notes que j'ai gardées. Je ne suis pas un expert en la matière, mais j'ai fait de mon mieux pour trouver toutes les informations pertinentes, les lire d'un œil critique et présenter clairement les parties les plus importantes. Veuillez me faire part de vos commentaires si quelque chose vous semble incorrect et je ferai de mon mieux pour le corriger.

Enfin des excuses pour certains problèmes de terminologie : Dans ce texte, j'utilise parfois le terme Linux au lieu d'UNIX ou POSIX. Je sais que ce ne sont pas les mêmes, mais il est très difficile de les différencier lorsqu'on aborde un sujet à une si grande distance. Même quand ce n'est pas difficile, cela prend du temps que je n'ai pas ;-)

10
10
10
2013-10-30 12:46:07 +0000

Je vous suggère de télécharger et d'installer un ensemble minimal de MinGW et aussi un ensemble minimal de MSYS. Le programme d'installation de MinGW vous offre une interface graphique facile pour choisir les paquets que vous voulez installer. Si tout ce que vous voulez est BASH, alors l'installation ne prendra pas plus de quelques mégaoctets.

UPDATE : Je suis passé au MSYS2 qui est beaucoup plus avancé, et a le port de l'outil pacman d'ArchLinux pour la gestion des paquets. L'installateur MSYS2 a tout ce dont vous avez besoin, et il utilise mintty ce qui est absolument parfait.

10
10
10
2013-11-20 01:00:47 +0000

Il y a aussi Clink disponible at GitHub . Il s'intègre dans l'invite de commande de Windows en utilisant des bibliothèques de hook.

A partir de la description du projet :

Clink combine le shell natif de Windows cmd.exe avec les puissantes fonctions d'édition en ligne de commande de la bibliothèque GNU Readline, qui offre de riches possibilités de complétion, d'historique et d'édition de ligne.

(il ne fournit donc pas de fonctionnalités de langage de programmation basique ou d'autres goodies Unix)

J'utilise Linux au travail et je me retrouve parfois à tabuler dans cmd qui n'agit pas comme je l'attends de Bash. Avec Clink, je peux surmonter certains de ces défauts.

Dernièrement, j'ai également découvert un projet prometteur, mais pas encore “réalisable”, appelé flinux qui émule les fonctions du système Linux et fournit une sorte de système par-dessus (actuellement basé sur Arch Linux)

7
7
7
2013-06-15 17:07:20 +0000

En plus de ce que faffaffaff a dit , Git for Windows comprend Bash et certains programmes courants de la ligne de commande Linux (par exemple Vim , sed , et gawk ). Il est basé sur MSYS . La version des programmes est cependant ancienne, par exemple Bash est la version 3.1. Cygwin aurait des versions plus récentes des utilitaires.

J'utilise également ConEmu comme émulateur de terminal (principalement pour la coloration syntaxique dans Vim, les pages à onglet et un copier-coller plus facile). console2 est également un autre émulateur de terminal populaire bien que je ne l'ai pas essayé.

2
2
2
2015-06-16 22:50:19 +0000

C'est l'une des premières choses que je fais quand je configure une nouvelle machine Windows : Une console fonctionnelle et élégante dans Windows

1
1
1
2015-06-19 15:44:31 +0000

Je viens d'essayer avec Babun , qui a intégré le Cygwin en interne, et qui me plaît bien : )

Le fichier de téléchargement est un peu gros, environ 250 MB. Mais l'installation est simple, il n'y a pas besoin de configurer quoi que ce soit et ça marche tout simplement !

Questions connexes

3
6
10
19
4