Catégories
VSCode

WSL: un shell Bash sous Windows 10

Lorsqu’on travaille sous Windows, il nous faut parfois la possibilité d’accéder à un environnement Linux.

Historiquement on utilisait (et on utilises toujours pour des raisons de perf) des ordinateur en dual boot (Bootcamp pour OSX) ou des machines virtuelles et depuis peu des conteneur Docker.

Linux est parfois encore « nécessaire » pour des raisons de compatibilité avec l’outillage Javascript (Node, React, Webpack etc.), ou automatiser des taches avec des scripts shell par exemple.

Pour cela nous allons utiliser Linux Debian fournie par Microsoft dans Windows 10 64 bit dénommée WSL pour Windows Subsystem for Linux (MSDN, aperçu global de l’archi et interop Win/Linux).

Pour les développeurs qui utilisent VSCode, ce Linux est également disponible dans le terminal intégré (CTRL + ALT + O).

Installer WSL Debian

installer Linux (WSL) pour Windows 10 depuis le Microsoft Store (build > 1709) et choisir sa distribution parmi celles-ci (Debian forever 😜):

pour les anciennes build de Windows 10 précédent la Fall Creators Update, suivre le tuto de Korben ou la doc Ubuntu-fr et plus d’infos ici)

Configurer la distribution à utiliser

Il est possible d’installer plusieurs distros Linux en mode WSL, et il faut pouvoir les gérer (fixer celle qu’on veut utiliser par défaut par ex).
Pour cela il existe: wslconfig.exe (anciennement lxrun.exe) à utiliser dans un shell DOS:

wslconfig /l 
wslconfig /s <DistributionName>

Configurer Visual Studio Code

Il est possible d’exploiter ce nouveau shell Linux depuis le du terminal intégré de VSCode, pour cela la configuration s’effectue en ajoutant dans les User Settings (CTRL + , ) le chemin vers le binaire bash de WSL:

"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\wsl.exe"

anciennement:

"terminal.integrated.shell.windows": "C:\\WINDOWS\\sysnative\\bash.exe"

doc MS à propos du Terminal Intégré de VSCode

Debugger une application Nodejs lancée à travers WSL

Il suffit de rajouter l’attribut « useWSL »: true  dans le launch.json

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/bin/www",
  "useWSL": true
}

Pièges à éviter

Si aucun terminal ne s’ouvre dans VSCode, le petit piège à éviter (et dans lequel je suis tombé) c’est que VsCode doit être installé en version 64 bits sur votre Windows10.
J’aurai pu éviter de perdre du temps si je l’avais installé avec Chocolatey

WSL peut planter au démarrage de la machine avec une erreur Error: 0x800703fa  il suffit de rebooter ou de relancer le service qui gère le l’instance du sous-système Windows pour Linux:

sc queryex LxssManager
sc start LxssManager

Et voilà !!