it-swarm.com.de

Bearbeiten von Dateien in einer Windows Subsystem für Linux-Entwicklungsumgebung

Windows-Subsystem für Linux (WSL) funktioniert ziemlich gut, um die meisten Linux-Befehlszeilentools verfügbar zu machen und ohne Änderungen unter Windows zu arbeiten. Allerdings wird es für die Entwicklung etwas knifflig, wenn man möchte

  • Erstellen Sie ein Projekt mit einer Linux-Toolchain , die kein gut unterstütztes Windows-Äquivalent enthält (Ruby, Node usw.).
  • Bearbeiten Sie Dateien mit einem Windows-basierten GUI-Editor wie Visual Studio-Code.

Das Problem ist, dass Windows-Apps keine Dateien innerhalb des virtuellen lxss-Dateisystems ändern können . Es ist bekannt, dass das direkte Ändern dieser Dateien alle möglichen Probleme verursacht.

Daher gibt es nur zwei suboptimale Möglichkeiten, um WSL für die Entwicklung zu verwenden:

  1. Speichern Sie das Projekt unter lxss (/home/foo). Die normale Toolchain funktioniert ordnungsgemäß. Die Bearbeitung ist jedoch entweder auf terminalbasierte Vim/Emacs-Versionen beschränkt oder auf alles, was unter einem Janky X-Server ausgeführt werden kann, was weniger reibungslos ist als native Editoren, die unter Windows ausgeführt werden.

  2. Speichern Sie das Projekt unter dem Windows-Dateisystem (/mnt/c/Users/foo). Jetzt kann jeder Windows-basierte Editor für die Entwicklung verwendet werden. Die Linux-basierte Toolchain ist jedoch zerbrechlich, da sie nicht für die Verwendung auf einem "Netzwerklaufwerk" entwickelt wurde und Probleme mit Dateiüberwachung oder Datenbanken verursachen kann.

Gibt es eine Möglichkeit, hier das Beste aus beiden Welten herauszuholen - das heißt, mit einer nativen Windows-Anwendung bearbeiten zu können, ohne dass die Linux-Toolchain wie auf einem lokalen Laufwerk funktioniert?

21
Andrew Mao

Microsoft hat kürzlich eine umfassende Unterstützung für dieses Problem hinzugefügt. Diese sollte im April 2019 (19H1) -Update allgemein verfügbar sein. Sobald es fertig ist, wird ein 9P-Server im Hintergrund ausgeführt, wenn eine Linux-Distribution ausgeführt wird. Der 9P-Server kann Linux-Dateisystem-Metadaten verarbeiten, und Windows kann sie als Netzlaufwerk behandeln, um einen sicheren Zugriff darauf zu ermöglichen. Sie können es unter https://blogs.msdn.Microsoft.com/commandline/2019/02/15/whats-new-for-wsl-in-windows-10-version nachlesen -1903/ .

Mit der neuen Funktion können Sie sicher von Windows aus auf Windows- und Linux-Dateisystemdateien zugreifen, solange Sie den 9P-Server verwenden. Dies wird nativ aus der WSL heraus erledigt. Beispielsweise können Sie in der WSL-Befehlszeile code /mnt/c/Users/username/src/windows-file.txt eingeben, um eine Windows-Datei in VS Code zu öffnen, oder code /home/username/src/linux-file.txt eingeben, um eine Linux-Datei in VS Code zu öffnen.

Wenn Sie nicht Teil des Windows Insider-Programms sind, haben Sie noch keinen Zugriff darauf, sodass Sie weiterhin eine ältere Methode wie wslpath verwenden müssen.

wslpath konvertiert zwischen Pfaden im Windows- und Linux-Stil, sodass Sie Windows-Dateien problemlos über die WSL-Befehlszeile öffnen können. Gemäß https://github.com/Microsoft/WSL/issues/3146#issuecomment-388118689 wird die Konvertierung von Linux-Dateisystempfaden (dh % AppData%\lxss), da es ohne 9P nicht sicher ist, diese Dateien unter Windows zu ändern. Dies bedeutet, dass Sie /home/username/src/linux-file.txt nicht öffnen können, aber code "$(wslpath -aw /mnt/c/Users/username/src/windows-file.txt)" verwenden können.

In der Vergangenheit gab es eine Reihe von Tools von Drittanbietern, die dieselbe Konvertierung durchführten, aber wslpath übernimmt dies nativ. Tatsächlich zeigt ls -l /bin/wslpath, dass es sich nur um einen Link zu/init handelt.

3
Shane Lawrence

Ich bin sicher, dass schlauere Leute als ich diese Frage angeschaut haben. Aber ich werde es beantworten. Ich glaube ehrlich, die Antwort ist derzeit nein. Es gibt einen besseren Weg, um das Beste aus beiden Welten zu bekommen, als die, die Sie erwähnt haben (die ich kenne).

Ich bin sicher, dass es nicht die Antwort ist, die jemand haben möchte, aber ich denke, dass es die richtige Antwort ist. Ich weiß, es ist etwas, das Microsoft versucht, reibungsloser zu machen, aber es ist noch nicht da.

1
trueCamelType

Wenn Sie Linux-Befehle ausführen und mit Windows-Editoren bearbeiten möchten. Sie können Ihren Quellcode (den Sie bearbeiten und testen möchten) irgendwo in Ihrem Dateisystem (wie c:\source \) speichern und in der Linux-Konsole über/mnt/c/source darauf zugreifen. Hoffe das hilft.

0
Eli

Im ersten Halbjahr 2018 hat Microsoft einige Verbesserungen an der WSL veröffentlicht, die einige der folgenden Probleme beheben:

Beides geht nicht vollständig auf die Probleme in meiner ursprünglichen Frage ein, kann jedoch in bestimmten Fällen die Benutzerfreundlichkeit verbessern.

0
Andrew Mao