Tandis que d'autres questions traitent de comment utiliser des choses comme git-bash , donner un nouveau tour à la nouvelle WSL car le terminal pour VS Code n'est pas la même: il vous donne accès à bash s'exécutant sur un Linux Ubuntu réel sous-système, au lieu du terminal git-bash exécuté sur le sous-système Windows.
Alors, comment pouvons-nous le faire fonctionner comme terminal VS Code, et en particulier comment le faire fonctionner comme un terminal d’environnement de développement fonctionnel?
Contrairement à git-bash, ce n’est malheureusement pas aussi simple, car la configuration Linux sous Ubuntu peut fournir quelques pièges, tels que NPM qui tente (et échoue) de s’exécuter à partir de votre répertoire Windows Program Files en raison de l’interaction entre WSL et Windows lui-même. certains paquets tels que Compass échouant pour des raisons qui ne sont pas forcément évidentes pour quelqu'un qui n'est pas habitué à développer sous Linux. Quel est un moyen simple d’avoir un environnement de terminal WSL fiable pour VS Code dans lequel les outils les plus fréquemment utilisés s’exécuteront lorsqu’ils seront installés via apt-get
ou npm
?
Cette réponse vise à aider les autres utilisateurs à éviter de passer 1 à 2 heures de dépannage et à trouver lentement des solutions disparates aux problèmes courants lors de l’utilisation de WSL pour le terminal dans VS Code. Elle ne couvre pas l’installation de packages spécifiques, mais plutôt les paquets courants qui peuvent ne pas s’installer correctement en tant que dépendances lors de l’installation de choses qui dépendent de leur présence et de la correction des paramètres communs associés.
Soit le CTRL+, raccourci clavier ou File
→ Preferences
→ Settings
En haut à droite de la fenêtre d'édition, assurez-vous que vous travaillez dans le contexte qui vous convient: soit Paramètres utilisateur ou Paramètres de l'espace de travail .
Dans la barre de recherche des paramètres, saisissez terminal.integrated.Shell.windows
(ou tout ce qui vous mène assez longtemps)
Recherchez le paramètre dans le fichier de paramètres actuel, utilisez Edit
(déplacez la souris sur la ligne, ce sera sur la gauche: sur un écran tactile sans souris, vous devriez pouvoir taper simplement à gauche de la ligne) et sélectionner Replace 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"
Ouvrez Paramètres/Outils/Terminal et définissez le champ "Shell path" sur "C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"
.
Quand 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 pouvez être invité à installer Ubuntu. Le faire Une fois votre installation terminée, choisissez votre nom d'utilisateur et votre mot de passe à utiliser dans WSL Ubuntu. Celles-ci ne doivent pas nécessairement coïncider avec votre compte Windows actuel et il est important de noter qu'elles 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 séparé. 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 ne contient pas tout ce que vous pouvez espérer ou ce que vous avez l'habitude de faire, 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.
Remarque: Je vais les documenter sous le nom de Sudo pour les personnes qui en ont simplement besoin, mais une option au début consiste à Sudo su
et exécutez simplement les commandes suivantes sans Sudo.
Assurez-vous que vos paquets Ubunt 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
Si vous avez déjà Node ou NPM chargé dans Windows, leur exécution dans Ubuntu peut poser problème en raison de problèmes de chemin. Donc, vous devez installer les versions natives Ubuntu et vous assurer qu’elles sont utilisées à la place.
Tout d'abord, installez node.js avec NPM . (alternative: install 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")
Ceci est dû à un problème de cheminement avec une solution assez simple . En utilisant votre éditeur CLI préféré (tel que nano
, vim
, emacs
, cat
et sed
… etc.), ouvrez votre ~/.profile
nano ~/.profile
Remarque: n'essayez PAS de modifier des fichiers Linux à l'aide d'outils Windows . (Merci à @ david-c- rankin's comment pour le lien officiel avec le texte en gras rouge expliquant cela) Si vous ne souhaitez pas utiliser un éditeur de ligne de commande pour cela dans le terminal, voir la fin de cet article pour un lien sur la façon d'obtenir une interface graphique fonctionnement.
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 npm par Windows, ajoutez-le donc avant le dernier $ PATH:
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"
Enregistrez à l'extérieur, puis rechargez le terminal ou sourcez simplement le fichier de chemin
source ~/.profile
Si vous utilisez quelque chose qui nécessite la compilation ou utilise autrement make, il est presque garanti que vous en aurez besoin; donc, si vous ne les avez pas installées lors de l'installation de node.js, faites-le. Il est beaucoup plus facile de simplement utiliser le paquet essentiel de la construction plutôt que d'essayer d'installer tout séparément.
Notez que des paquets tels que Compass, qui reposent sur Ruby FFI, échoueront sans cela. Si vous rencontrez des problèmes pour installer et exécuter correctement un outil, assurez-vous que gcc et que make est installé peut être un bon point de départ.
Sudo apt-get install -y build-essential
Notez que si vous utilisez tasks.json de VS Code pour exécuter des tâches de construction, il les exécutera toujours par défaut en utilisant le sous-système Windows au lieu de celui d'Ubuntu. Parfois c'est peut-être ce que vous voulez, mais si vous venez de terminer l'installation de grunt-cli sous Ubuntu et non 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 gestionnaire de tâches comme terminal . C'est de loin le moyen le plus simple de migrer des tâches.
Il suffit de définir
"runner": "terminal",
dans votre tasks.json
et vous avez terminé (en supposant que vous disposiez de tous les outils appropriés que vous essayez d'exécuter installés maintenant dans WSL Ubuntu) .
Ceci est très portable, ne nécessitant idéalement aucun changement entre les systèmes dotés ou non de WSL, ou d’autres systèmes d’exploitation. C’est la méthode que je recommanderais.
Pour le moment, cette méthode génère une autre instance de l'onglet TERMINAL
(accessible à partir du menu déroulant). Vous pouvez toujours configurer des observateurs appropriés, mais cela signifie qu’il ne reste plus sur l’onglet OUTPUT
.
L'ancienne méthode est capable d'appeler le shell WSL Ubunutu Bash et de l'afficher dans OUTPUT
, et implique d'appeler bash.exe avec l'argument -c ou d'utiliser un script Shell. Malheureusement, ce n’est pas aussi sémantique, puisque nous faisons bash
notre commande et lui transmettons ce que nous voulons exécuter comme argument. Cela signifie également qu'il n'est pas aussi rapidement portable sur d'autres systèmes.
Vous pouvez utiliser le même emplacement que vous avez précédemment attribué à VS Code pour le terminal lui-même, C:\\WINDOWS\\Sysnative\\bash.exe
, en tant que valeur pour command
Définissez le premier élément du tableau args
en tant que -c
et le second en tant que commande à exécuter ( à la seconde moitié de cette réponse ).
Alternativement, vous pouvez à la place exécuter un script Shell comme on le voit ici .
Voulez-vous démarrer VSCode dans Windows à partir de la ligne de commande WSL Bash ?
Voulez-vous avoir un interface graphique pour votre WSL Ubunt ? (Cela vous permettra de faire des choses comme utiliser un éditeur graphique Linux pour les fichiers dans le système Ubuntu lui-même: ne les éditez pas avec les outils d’édition Windows, voir commentaires/remarque dans la section npm)
Voulez-vous 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 Ubunt ? (cela montre comment utiliser gdb, mais le concept pipeTransport
pourrait être utilisé avec d'autres débogueurs) (crédit à cette réponse , mais celle qui le précède fournit également une méthode utilisant la boucle locale qui pourrait s'avérer utile )
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",
Maintenant, vous pouvez utiliser extension WSL de Microsoft .