Cette réponse vise à aider les autres à éviter de passer 1 à 2 heures à dépanner et à trouver lentement des solutions disparates aux problèmes courants lors de l'utilisation de WSL pour le terminal dans VS Code. Il ne couvre pas l'installation de packages spécifiques, mais plutôt ceux courants qui peuvent ne pas s'installer correctement en tant que dépendances lors de l'installation d'éléments qui dépendent de leur présence et de la correction des paramètres communs associés.
Résumé des étapes
- WSL installé
- Code VS (ou autre IDE) configuré pour le terminal
- NPM installé et correctif de chemin dans .profile (peut aider avec d'autres outils)
- build-essential installé (aide avec tous les outils qui utilisent make / gcc / etc)
- Tâches de code VS utilisant WSL
- Suppléments
Mise en route et exigences
- Vous devez avoir installé WSL . (Ce qui signifie que vous devez exécuter Windows 10 64 bits , avec les mises à jour appropriées) Suivez le guide d'installation s'il n'est pas déjà installé. Cela nécessitera quelques redémarrages.
Configuration du terminal de code VS
Soit le raccourci clavier CTRL+ ,, soit File
→ Preferences
→Settings
En haut à droite de la fenêtre d'édition, assurez - vous que vous travaillez dans le contexte approprié pour vous: soit les paramètres de l' utilisateur ou les paramètres d' espace de travail .
Dans la barre de recherche des paramètres, tapez terminal.integrated.shell.windows
(ou tout ce qui vous amène assez loin)
Trouvez le paramètre dans le fichier de paramètres réel, utilisez Edit
(passez la souris sur la ligne, ce sera à gauche: sur un écran tactile sans souris, vous devriez pouvoir simplement taper à gauche de la ligne), et sélectionnezReplace in Settings
Dans le volet de droite, modifiez l'entrée créée dans le fichier json modifié: remplacez le paramètre précédent par
"C:\\WINDOWS\\Sysnative\\bash.exe"
Autres IDE: IntelliJ
Ouvrez Paramètres / Outils / Terminal et définissez le champ "Chemin du shell" sur "C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"
Rendre votre terminal WSL Ubuntu Bash fonctionnel pour les développeurs
Lorsque vous utilisez CTRL+ `pour ouvrir le terminal, vous devriez maintenant avoir un terminal bash.
Si c'est la première fois que vous exécutez bash.exe, vous serez peut-être invité à installer Ubuntu. Faites-le. Une fois votre installation terminée, choisissez votre nom d'utilisateur et votre mot de passe à utiliser dans WSL Ubuntu. Ceux-ci ne doivent pas nécessairement coïncider avec votre compte Windows actuel et il est important de noter qu'ils ne changeront pas en fonction des modifications apportées au mot de passe de votre compte Windows.
Une fois que vous avez terminé, vous aurez une invite de commande bash dans votre terminal.
Notez que contrairement à git-bash sous Windows, il s'agit d'un environnement distinct. Bien qu'il puisse être utilisé pour lancer un logiciel Windows en dehors de lui-même, vous aurez besoin des packages Ubuntu appropriés pour les exécuter dans le terminal réel.
Actuellement, WSL n'est pas livré avec tout ce que vous pourriez attendre ou avoir l'habitude d'avoir, et certaines choses peuvent entrer en conflit avec les logiciels que vous avez chargés dans Windows, en fonction des paramètres de profil par défaut.
Mises à jour & git
Remarque: je vais les documenter comme sudo pour les personnes qui ont simplement besoin de pièces uniques, mais une option au début consiste à sudo su
exécuter à la place et simplement les commandes suivantes sans sudo.
Assurez-vous que vos packages Ubuntu sont à jour:
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt autoremove
Installez git:
sudo apt-get install git
Node.js et NPM
Si vous avez déjà chargé Node ou NPM dans Windows, les exécuter dans Ubuntu peut devenir problématique en raison de problèmes de chemin. Vous devez donc installer les versions natives d'Ubuntu et vous assurer qu'elles sont utilisées à la place.
Tout d'abord, installez node.js avec NPM . (alternative: installez NVM et utilisez-le pour installer node.js)
Après l'installation, l'exécution des commandes npm échouera probablement: par exemple, npm -v
vous donnera probablement:
: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")
Cela est dû à un problème de chemin avec une solution assez simple . En utilisant votre éditeur de CLI favori (comme nano
, vim
, emacs
, cat
et sed
... etc), ouvrez votre~/.profile
nano ~/.profile
Remarque: n'essayez PAS de modifier les fichiers Linux à l'aide des outils Windows . (Merci au commentaire de @ david-c-rankin pour le lien officiel avec le texte rouge en gras expliquant cela) Si vous ne voulez pas utiliser un éditeur CLI pour cela dans le terminal, voir le bas de cet article pour un lien sur comment pour faire fonctionner une interface graphique.
Actuellement, la variable PATH bash par défaut dans WSL est
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Ce qui injecte le chemin Windows après les deux premiers répertoires binaires. Malheureusement, cela n'entraîne pas l'utilisation de / usr / bin avant l'installation de Windows npm, alors ajoutez cela avant le $ PATH final:
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"
Enregistrez, puis rechargez le terminal ou recherchez simplement le fichier de chemin
source ~/.profile
Construire-essentiel
Si vous utilisez quelque chose qui nécessite une compilation ou qui utilise make, il est presque garanti que vous en aurez besoin; donc si vous ne les avez pas installés lors de l'installation de node.js, faites-le. Il est beaucoup plus facile d'utiliser simplement le package build-essential plutôt que d'essayer de tout installer séparément.
Notez que les packages tels que Compass qui reposent sur Ruby FFI échoueront sans ceux-ci. Si vous rencontrez des difficultés pour installer et exécuter correctement un outil, assurez-vous que gcc et make sont installés peut être un bon point de départ.
sudo apt-get install -y build-essential
Exécuter des tâches à l'aide d'Ubuntu
Notez que si vous utilisez le fichier tasks.json de VS Code pour exécuter des tâches de construction, par défaut, il les exécutera toujours en utilisant le sous-système Windows au lieu de celui d'Ubuntu. Parfois, cela peut être ce que vous voulez, mais si vous venez de terminer l'installation de grunt-cli dans Ubuntu et non dans Windows, ce n'est probablement pas le cas.
VS Code a récemment eu la mise à jour de mai 2017 sur le fonctionnement des tâches qui lui permet de définir le lanceur de tâches comme terminal . C'est de loin le moyen le plus simple de migrer des tâches.
Réglez simplement
"runner": "terminal",
dans votre tasks.json
et vous avez terminé (en supposant que vous avez tous les outils appropriés que vous essayez d'exécuter maintenant installés dans WSL Ubuntu).
C'est très portable, ne nécessitant idéalement aucun changement entre les systèmes qui ont ou non WSL, ou vers d'autres systèmes d'exploitation, et c'est la méthode que je recommanderais.
À partir du moment, cette méthode génère une autre TERMINAL
instance d'onglet (accessible à partir du menu déroulant). Vous pouvez toujours configurer des observateurs appropriés, mais cela signifie qu'il n'est plus assis sur l' OUTPUT
onglet.
L'ancienne méthode est capable d'appeler le shell WSL Ubunutu Bash et de le faire apparaître OUTPUT
, et implique soit d'appeler bash.exe avec l'argument -c, soit d'utiliser un script shell. Ce n'est malheureusement pas aussi sémantique, puisque nous faisons bash
notre commande et lui passons ce que nous voulons exécuter comme argument à la place. Cela signifie également qu'il n'est pas aussi rapidement portable vers d'autres systèmes.
Vous pouvez utiliser le même emplacement que vous avez indiqué précédemment pour VS Code pour le terminal lui-même, C:\\WINDOWS\\Sysnative\\bash.exe
comme valeur pourcommand
Définissez le premier élément du args
tableau comme -c
et le second comme la commande que vous souhaitez exécuter ( crédit à la seconde moitié de cette réponse ).
Sinon, vous pouvez à la place exécuter un script shell comme indiqué ici .
Autres bits utiles
Vous voulez démarrer VSCode dans Windows à partir de la ligne de commande WSL Bash ?
Vous voulez avoir une interface graphique pour votre WSL Ubuntu ? (cela vous permettra de faire des choses comme utiliser un éditeur GUI Linux pour les fichiers dans le système Ubuntu lui-même: ne les éditez pas à l'aide des outils d'édition Windows, voir les commentaires / note dans la section sur npm)
Vous voulez construire (voir la partie ci-dessus sur la configuration correcte des tâches de code VS pour WSL) et déboguer entièrement dans WSL Ubuntu ? (cela montre comment le faire en utilisant gdb, mais le pipeTransport
concept pourrait être utilisé avec d'autres débogueurs) (crédit à cette réponse , mais celle qui précède fournit également une méthode utilisant le bouclage local qui pourrait s'avérer utile)
.profile
.C:\Windows\SysWOW64\cmd.exe
et en cours d'exécutiondir C:\Windows\Sysnative
* Cela fonctionne en VSCode 64 bits car il est codé pour le traduire automatiquementubuntu.exe
vous risquez de vous retrouver dans votre dossier utilisateur au lieu du dossier du projet. C'est pourquoi vous souhaitez configurer votre terminal enC:\\Windows\\System32\\wsl.exe
fonction de github.com/Microsoft/WSL/issues/2795 Utilisezwslconfig /setdefault Ubuntu
pour vous assurer que la bonne installation démarre.si vous souhaitez utiliser zsh, recherchez le chemin de ubuntu1804.exe ou ubuntu1604.exe.
dans mon cas
"terminal.external.windowsExec": "C:\\Users\\asdf\\AppData\\Local\\Microsoft\\WindowsApps\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\ubuntu1804.exe", "terminal.integrated.shell.windows": "C:\\Users\\asdf\\AppData\\Local\\Microsoft\\WindowsApps\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\ubuntu1804.exe",
la source
Vous pouvez maintenant utiliser l'extension WSL de Microsoft .
la source