Developpez.com

Le Club des Développeurs et IT Pro

Windows 10 : la première build avec le support du Shell Unix Bash est disponible

Pour les testeurs du programme Windows Insider

Le 2016-04-07 08:53:48, par Michael Guilloux, Chroniqueur Actualités
Build 2016, la conférence annuelle de Microsoft dédiée aux développeurs s’est déroulée la semaine dernière et a livré une série d’annonces intéressantes. Parmi celles-ci, le support de Bash dans Windows 10 était l’une des plus surprenantes, mais également des plus appréciées par les développeurs. Pour rappel, Bash (l’acronyme de Bourne Again Shell) est un interpréteur de ligne de commande de type script et le Shell Unix du projet GNU.

Comme Microsoft l’a expliqué, il ne s’agit ni d’une compilation croisée ni d’une machine virtuelle qui permettra d’exécuter l’interpréteur de ligne de commande sous Windows 10. L’exécution de Bash sous Windows 10 sera native, et cela grâce à un partenariat avec Canonical qui a permis la création d'un sous-système dédié, Windows Subsystem for Linux (WSL), capable d’exécuter des binaires Linux. WSL a été discrètement débarqué dans la build 14251 de Windows 10. « La résultante est qu’il vous est désormais possible d’exécuter du Bash natif Ubuntu sur Windows », a annoncé Microsoft lors de sa conférence.

À peine une semaine après l’annonce, les développeurs membres du programme Windows Insider pourront déjà commencer à tester l’interpréteur de ligne de commande, dont le support vient de débarquer dans une nouvelle build de l’OS. En effet, dans un billet de blog dédié à la sortie de la build 14316, Microsoft a annoncé hier que « vous pouvez exécuter Bash en mode natif sous Windows comme annoncé la semaine dernière à la Build 2016 ». La société fournit également les instructions pour installer l’interpréteur de ligne commande sous Windows 10.

Toutefois, avant de se lancer, il est important de rappeler quelques précisions fournies la semaine dernière par Mike Harsh de Microsoft :

  • tout d’abord, c’est la première fois que cet outil est proposé (et est catégorisé « bêta » pour cette raison) : nous savons qu’il y aura des choses qui ne fonctionneront pas comme vous vous y attendiez. N’espérez pas voir des scripts Bash qui vont fonctionner à la perfection. Mais essayer cette fonctionnalité nous permet de savoir ce sur quoi nous avons besoin de travailler afin de l’améliorer ;
  • ensuite, bien que vous serez en mesure d’exécuter du Bash en natif ainsi que plusieurs lignes de commande Linux sur Windows, il est important de garder à l’esprit que c’est une boîte à outils développeurs qui a été pensée pour vous aider à écrire et concevoir vos codes pour vos scénarios et plateformes. Il ne s’agit pas là d’une plateforme serveur sur laquelle vous pourrez héberger vos sites, exécuter des infrastructures serveur, etc. ;
  • enfin, rappelez-vous que Bash et les outils Linux ne peuvent pas interagir avec les applications et outils Windows. Alors vous ne serez pas en mesure de lancer Notepad depuis Bash ou de lancer Ruby sur Bash depuis PowerShell.

Si le Shell Bash ne sera pour l'instant disponible que pour les Windows Insiders, la nouvelle fonctionnalité pourrait débarquer chez tout le monde l’été prochain, avec la mise à jour anniversaire de Windows 10.

Source : Microsoft

Et vous ?

Qu’en pensez-vous ?

Voir aussi :

Microsoft apporte le Shell Unix Bash à Windows 10, le résultat d'une collaboration avec Canonical
  Discussion forum
89 commentaires
  • Aurelien.Regat-Barrel
    Expert éminent sénior
    Envoyé par Michael Guilloux
    enfin, rappelez-vous que Bash et les outils Linux ne peuvent pas interagir avec les applications et outils Windows. Alors vous ne serez pas en mesure de lancer Notepad depuis Bash ou de lancer Ruby sur Bash depuis PowerShell.
    Ils ont donc réellement implémenté un nouveau subsystem ! Faut savoir qu'à la base, NT dispose de 3 sous-systèmes : Win32 (avec option GUI ou console), OS/2, et... POSIX. Un sous-système est en quelque sorte une API user mode qui s'interface directement avec le kernel. C'est vraiment un environnement d'exécution à part, "natif", au lieu d'un couche supplémentaire à la Cygwin implémentée au dessus de Win32. Là, il n'y a pas de Win32 du tout. Du coup il devrait y avoir un respect de la casse dans les noms de fichiers, du fork de process (que le kernel supporte)...

    L’existence du sous système OS/2, c'est lié à l'histoire de NT qui était à l'origine un projet pour remplacer l'OS/2 16 bits d'IBM (=> OS/2 NT). POSIX 1, il me semble que c'est parce que le DoD demandait cela comme condition d'acceptation d'un OS dans leur administration. Ces deux sous systèmes ont été supprimés avec Windows XP... Qui aurait cru que cette "fonctionnalité" allait refaire surface !

    Mais là où je me pose une question, c'est que normalement, il va y avoir un nouveau flag spécifique de créé au niveau du format exécutable (PE Header). Et donc gcc & clang (enfin leur linker plus précisément) vont devoir être patchés pour savoir cibler ce sous-système. Je sais pas comment ils vont gérer cela de façon la plus transparente possible (si on veut faire des compilations).
  • nikau6
    Membre extrêmement actif
    Ça, c'est LA fonctionnalité qui va me faire tomber amoureux de Windows 10.

    Envoyé par sazearte
    ...
    Le seul bémol, ..., il sera impossible par exemple d’accéder au systeme de fichier et donc par exemple a un simple fichier texte stocker dans C:\monfichier.txt
    ...
    Il ne sera pas possible de lancer des exécutables Windows depuis ce Bash, mais les interactions avec le système de fichier Windows seront possibles.
  • youx
    Membre du Club
    Sur la stratégie de Microsoft dans le domaine cela me fait penser à leur vieux adage remis au goût du jour par la nouvelle équipe de direction:" Étreindre, Étendre, Éteindre".

    Avec leur direction open source et d'ouverture ils essais de ce rendre indispensable pour pléthore de service sur le thème "avec moi c'est plus simple que la concurrence". Techniquement intéressant comme projet, c'est tout pour moi.
  • jlliagre
    Modérateur
    Il ne s'agit pas de binaires classiques Windows (PE) mais de binaires Linux ELF, crées par le gcc natif d'Ubuntu, puisqu'on installe directement un userland Ubuntu.

    Le sous système POSIX renaît donc sous la forme d'un sous système Gnu/Windows...
  • Aurelien.Regat-Barrel
    Expert éminent sénior
    Cool Je me suis fait la réflexion après coup sans trop y croire, mais à bien y réfléchir c'est en effet le plus simple d'un point de vue technique. Mais bash lui-même, c'est une appli Win32 ou un executable ELF? Le loader de Windows a-t-il été mis à jour pour gérer les binaires ELF et les charger le sous système dédié? Ou dit autrement : peut-on lancer n'importe quel exe Linux depuis Explorer au même titre qu'on lance une appli DOS?
  • jlliagre
    Modérateur
    Envoyé par sazearte
    il sera impossible par exemple d’accéder au systeme de fichier et donc par exemple a un simple fichier texte stocker dans C:\monfichier.txt
    A priori, si: les volumes Windows sont accessibles sous /mnt/c, /mnt/d, etc.

    Ce qui je trouve est un grosse limitation. Autant ne pas pouvoir lancer des .exe je comprend que c'est impossible
    C'est pourtant la grosse limitation, cygwin sait très bien lancer les .exe.

    Sinon sera t'il possible de lancer des programmes graphiques voir une gui complète ?
    Il n'y a pas de support du serveur X11. Je ne sais pas ce qu'il en est des clients.
  • helper_moi
    Membre régulier
    C'est une bonne nouvelle pour moi ancien linuxien, on attend la suite ...
  • jlliagre
    Modérateur
    Envoyé par mhtrinh
    Ca sert a quoi d'executer bash tout seul dans son coins ?
    À rien s'il ny avait que bash, mais tous les binaires Ubuntu s'installent, avec la commande native apt-get, et beaucoup de ceux qui se limitent à la ligne de commande semblent s'exécuter correctement d'après ce que j'ai pu lire, car je n'ai pas testé.C'est quand même une version bêta, donc il reste des problèmes.

    L'intérêt principal par rapport à cygwin, c'est le nombre de logiciels disponibles dans le repository Ubuntu.

    Le désavantage, c'est le cloisonnement. À part l'accès au système de fichiers windows (/mnt/c, etc.), il ne semble pas qu'il y ait d'interaction possible avec Windows alors que cygwin est beaucoup plus intégré.
  • jlliagre
    Modérateur
    Il s'agit bien de ça (sauf qu'Ubuntu n'est pas certifié POSIX), mais c'est en fait beaucoup plus car un environnement Ubuntu (Debian), même limité à la ligne de commande, est largement plus riche et étendu que ce que définit POSIX.

    L'exécution de binaires et bibliothèques dans un format non natif (ELF au lieu de PE) est bien la nouveauté sous Windows.
  • air-dex
    Membre expert
    Que vient faire WINE dans un partenariat entre Microsoft et Canonical ?

    Après le but de Microsoft reste au fond le même. Ils s'en foutent DU MOMENT QUE ça tourne sur des solutions Microsoft. Si le libre leur permet d'atteindre cet objectif alors tant mieux pour eux.