Diese Antwort soll anderen helfen, 1-2 Stunden bei der Fehlerbehebung zu vermeiden und langsam unterschiedliche Lösungen für häufig auftretende Probleme zu finden, wenn WSL für das Terminal in VS Code verwendet wird. Es wird nicht die Installation bestimmter Pakete behandelt, sondern häufig verwendete Pakete, die möglicherweise nicht ordnungsgemäß als Abhängigkeiten installiert werden, wenn Dinge installiert werden, die auf deren Vorhandensein und dem Beheben verwandter allgemeiner Einstellungen beruhen.
Zusammenfassung der Schritte
- WSL installiert
- VS-Code (oder eine andere IDE), die für das Terminal konfiguriert ist
- NPM installiert und Pfadkorrektur in .profile (kann bei anderen Tools hilfreich sein)
- Build-Essential installiert (hilft bei allen Tools, die make / gcc / etc verwenden)
- VS-Code-Aufgaben mit WSL
- Extras
Erste Schritte und Anforderungen
- Sie müssen WSL installiert haben . (Dies bedeutet, dass Sie 64-Bit- Windows 10 mit den entsprechenden Updates ausführen müssen.) Befolgen Sie die Installationsanleitung, falls diese noch nicht installiert ist. Dies erfordert einige Neustarts.
VS Code Terminal Konfiguration
Entweder die Tastenkombination CTRL+ ,oder File
→ Preferences
→Settings
Stellen Sie oben rechts im Bearbeitungsfenster sicher, dass Sie im richtigen Kontext für Sie arbeiten: entweder Benutzereinstellungen oder Arbeitsbereichseinstellungen .
terminal.integrated.shell.windows
Geben Sie in die Suchleiste für Einstellungen ein (oder was auch immer Sie weit genug lang macht)
Suchen Sie die Einstellung in der eigentlichen Einstellungsdatei, verwenden Sie Edit
(Maus über die Linie, sie befindet sich links: Auf einem Touchscreen ohne Maus sollten Sie einfach links neben der Linie tippen können) und wählenReplace in Settings
Ändern Sie im rechten Bereich den Eintrag, der in der geänderten JSON-Datei erstellt wurde: Ersetzen Sie die vorherige Einstellung durch
"C:\\WINDOWS\\Sysnative\\bash.exe"
Andere IDEs: IntelliJ
Öffnen Sie Einstellungen / Extras / Terminal und setzen Sie das Feld "Shell-Pfad" auf "C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"
Machen Sie Ihr WSL Ubuntu Bash Terminal für Entwickler funktionsfähig
Wenn Sie das Terminal mit CTRL+ `öffnen, sollten Sie jetzt ein Bash-Terminal haben.
Wenn Sie bash.exe zum ersten Mal ausführen, werden Sie möglicherweise nach der Installation von Ubuntu gefragt. Tun Sie dies. Wählen Sie nach Abschluss Ihrer Installation Ihren Benutzernamen und Ihr Kennwort für WSL Ubuntu. Diese müssen nicht mit Ihrem aktuellen Windows-Konto übereinstimmen, und es ist wichtig zu beachten, dass sie sich nicht aufgrund von Änderungen am Kennwort Ihres Windows-Kontos ändern.
Sobald Sie fertig sind, wird in Ihrem Terminal eine Bash-Eingabeaufforderung angezeigt.
Beachten Sie, dass dies im Gegensatz zu git-bash unter Windows eine separate Umgebung ist. Während es verwendet werden kann, um Windows-Software außerhalb von sich selbst zu starten , benötigen Sie entsprechende Ubuntu-Pakete, um sie im eigentlichen Terminal auszuführen.
Derzeit wird die WSL nicht mit allem geladen, was Sie erwarten oder gewohnt sind, und einige Dinge können aufgrund der Standardprofileinstellungen zu Konflikten mit der in Windows geladenen Software führen.
Updates & Git
Hinweis: Ich werde diese als sudo für Leute dokumentieren, die nur einzelne Teile davon benötigen, aber eine Option am Anfang besteht darin, stattdessen sudo su
einfach die folgenden Befehle ohne sudo auszuführen.
Stellen Sie sicher, dass Ihre Ubuntu-Pakete auf dem neuesten Stand sind:
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt autoremove
Git installieren:
sudo apt-get install git
Node.js & NPM
Wenn Sie Node oder NPM bereits in Windows geladen haben, kann die Ausführung in Ubuntu aufgrund von Pfadproblemen problematisch werden. Sie müssen also die nativen Ubuntu-Versionen installieren und sicherstellen, dass sie stattdessen verwendet werden.
Zuerst installieren node.js mit NPM . (Alternativ: Installieren Sie NVM und verwenden Sie es, um node.js zu installieren.)
Nach der Installation schlägt das Ausführen von npm-Befehlen wahrscheinlich fehl. Beispielsweise erhalten npm -v
Sie wahrscheinlich Folgendes:
: 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")
Dies ist auf ein Pfadproblem mit einer ziemlich einfachen Lösung zurückzuführen . Mit Ihrem Lieblings - CLI - Editor (wie nano
, vim
, emacs
, cat
und sed
... etc), öffnen Sie Ihre~/.profile
nano ~/.profile
Hinweis: Versuchen Sie NICHT, Linux-Dateien mit Windows-Tools zu bearbeiten . (Dank des Kommentars von @ david-c-rankin für den offiziellen Link mit dem fett gedruckten roten Text, der dies erklärt.) Wenn Sie dafür keinen CLI-Editor im Terminal verwenden möchten, finden Sie unten in diesem Beitrag einen Link dazu um eine GUI zum Laufen zu bringen.
Derzeit ist die Standard-Bash-PATH-Variable in WSL
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Womit der Windows-Pfad nach den ersten beiden Binärverzeichnissen eingefügt wird. Leider führt dies nicht dazu, dass / usr / bin verwendet wird, bevor Windows npm installiert wird. Fügen Sie dies also vor dem endgültigen $ PATH hinzu:
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"
Speichern Sie das Terminal und laden Sie es entweder neu oder geben Sie die Pfaddatei als Quelle ein
source ~/.profile
Build-essentiell
Wenn Sie etwas verwenden, das kompiliert oder anderweitig verwendet werden muss, ist fast garantiert, dass Sie diese installieren müssen. Wenn Sie sie während der Installation von node.js nicht installiert haben, tun Sie dies. Es ist viel einfacher, das Build-Essential-Paket zu verwenden, als zu versuchen, alles separat zu installieren.
Beachten Sie, dass Pakete wie Compass, die auf Ruby FFI basieren, ohne diese fehlschlagen. Wenn Sie Probleme haben, ein Tool ordnungsgemäß zu installieren und auszuführen, kann es ein guter Anfang sein, sicherzustellen, dass Sie gcc und make installiert haben.
sudo apt-get install -y build-essential
Ausführen von Aufgaben mit Ubuntu
Beachten Sie, dass wenn Sie die Tasks.json von VS Code zum Ausführen von Build-Tasks verwenden, diese standardmäßig weiterhin mit dem Windows-Subsystem anstelle des Ubuntu-Subsystems ausgeführt werden. Manchmal ist dies vielleicht das, was Sie wollen, aber wenn Sie gerade die Installation von grunt-cli in Ubuntu und nicht in Windows abgeschlossen haben, ist dies wahrscheinlich nicht der Fall.
VS Code hatte kürzlich das Mai-Update 2017 für die Funktionsweise von Aufgaben, mit dem der Task-Runner als Terminal festgelegt werden kann . Dies ist bei weitem der einfachste Weg, um Aufgaben zu migrieren.
Einfach einstellen
"runner": "terminal",
in Ihrem tasks.json
und Sie sind fertig (vorausgesetzt, Sie haben alle geeigneten Tools, die Sie ausführen möchten, jetzt in WSL Ubuntu installiert).
Dies ist sehr portabel und erfordert idealerweise keine Änderungen zwischen Systemen mit oder ohne WSL oder anderen Betriebssystemen. Dies ist die Methode, die ich empfehlen würde.
Ab sofort erzeugt diese Methode eine weitere TERMINAL
Registerkarteninstanz (Zugriff über die Dropdown-Liste). Sie können weiterhin geeignete Beobachter einrichten, dies bedeutet jedoch, dass diese nicht mehr auf der OUTPUT
Registerkarte sitzen .
Die alte Methode ist in der Lage, die WSL Ubunutu Bash-Shell aufzurufen und OUTPUT
in anzuzeigen, und umfasst entweder den Aufruf von bash.exe mit dem Argument -c oder die Verwendung eines Shell-Skripts. Es ist leider nicht so semantisch, da wir bash
unseren Befehl geben und ihn übergeben, was wir stattdessen als Argument ausführen möchten. Dies bedeutet auch, dass es nicht so schnell auf andere Systeme portierbar ist.
Sie können denselben Speicherort, den Sie zuvor für das Terminal angegeben haben, C:\\WINDOWS\\Sysnative\\bash.exe
als Wert für verwendencommand
Legen Sie das erste Element des args
Arrays als -c
und das zweite als den Befehl fest, den Sie ausführen möchten ( Gutschrift für die zweite Hälfte dieser Antwort ).
Alternativ können Sie stattdessen ein Shell-Skript ausführen, wie hier gezeigt .
Weitere hilfreiche Dinge
Möchten Sie VSCode in Windows von der WSL Bash Kommandozeile starten ?
Möchten Sie eine grafische Oberfläche für Ihre WSL Ubuntu haben ? (Auf diese Weise können Sie beispielsweise einen Linux-GUI-Editor für Dateien im Ubuntu-System selbst verwenden: Bearbeiten Sie sie nicht mit Windows-Bearbeitungstools, siehe Kommentare / Hinweise im Abschnitt zu npm.)
Möchten Sie (siehe den obigen Abschnitt zum ordnungsgemäßen Einrichten von VS-Code-Aufgaben für WSL) erstellen und vollständig in WSL Ubuntu debuggen ? (Dies zeigt, wie dies mit gdb gemacht wird, aber das pipeTransport
Konzept könnte mit anderen Debuggern verwendet werden.) ( Diese Antwort wird gutgeschrieben, aber die vorhergehende bietet auch eine Methode mit lokalem Loopback, die sich als nützlich erweisen könnte.)