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


23

Das Windows-Subsystem für Linux (WSL) eignet sich 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 im virtuellen lxss-Dateisystem ändern können . Es ist bekannt, dass das direkte Ändern dieser Dateien alle möglichen Probleme verursacht.

Daher scheint es nur zwei suboptimale Möglichkeiten zu geben, 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 , der weniger flüssig 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 instabil, da sie nicht für die Verwendung auf einem "Netzwerklaufwerk" entwickelt wurde und Probleme beim Überwachen von Dateien oder Datenbanken verursachen kann .

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

Antworten:


4

Microsoft hat kürzlich eine umfassende Unterstützung für dieses Problem hinzugefügt. Diese sollte im April 2019 (19H1) 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-1903/ nachlesen .

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 über die WSL-Befehlszeile code /mnt/c/Users/username/src/windows-file.txteine Windows-Datei in VS Code oder code /home/username/src/linux-file.txteine Linux-Datei in VS Code ö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 einfach über die WSL-Befehlszeile öffnen können. Wie pro https://github.com/Microsoft/WSL/issues/3146#issuecomment-388118689 , wird es ablehnen , Linux - Dateisystem Pfade (dh% AppData% \ lxss), zu konvertieren , weil ohne 9P ist es unsicher , diese Dateien von Windows zu ändern . Das heißt, Sie können nicht öffnen /home/username/src/linux-file.txt, aber Sie können verwenden code "$(wslpath -aw /mnt/c/Users/username/src/windows-file.txt)".

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


@alex wsltools kann die Linux-Pfade in ihre Windows-Entsprechungen konvertieren. Auf diese Weise können Sie ein Windows-Programm über die Linux-Befehlszeile öffnen und es anweisen, eine Datei im Windows-Dateisystem zu öffnen.
Shane Lawrence

Glaube nicht blogs.msdn.microsoft.com/commandline/2016/11/17/… . Können Sie einen Hinweis geben, dass dies sicher ist?
Alex

@alex danke, dass du das angesprochen hast. Dies ist ein guter Punkt, um zu klären. Der von Ihnen freigegebene Link (der auch in Frage von OP steht) weist Sie an, keine Dateien im Linux-Dateisystem von Windows aus zu öffnen (dh Windows-Apps nicht verwenden, um Änderungen unter% AppData% \ lxss vorzunehmen). Meine Antwort und mein vorheriger Kommentar beschreiben beide das Öffnen von Windows-Dateien in Windows-Programmen über die WSL-Befehlszeile (z. B. Öffnen von "C: \ Users \ Username \ src \ example.txt" über den WSL-Pfad "/ mnt / c / Users / Benutzername / src / example.txt "). Es gibt auch eine neue Methode. Ich habe meine Antwort aktualisiert, um die Unterscheidung und die neue Methode zu zeigen.
Shane Lawrence

Shane, wozu dient die WSL, wenn Sie Windows-Dateien mit Windows-Binärdateien bearbeiten möchten? Warum nicht einfach Windows benutzen?
Alex

Gute Nachrichten: WSL kann jetzt Linux-Dateien ohne Probleme mit Win10 1903 bearbeiten: devblogs.microsoft.com/commandline/… "In der Vergangenheit führte das Erstellen und Ändern von Linux-Dateien unter Windows zum Verlust von Dateien oder zur Beschädigung von Daten. Möglich wurde dies durch a Wir sind stolz darauf, Ihnen mitteilen zu können, dass Sie von Windows aus problemlos auf alle Dateien in Ihren Linux-Distributionen zugreifen können. "
KERR

1

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, es ist die richtige Antwort. Ich weiß, es ist etwas, das Microsoft versucht, reibungsloser zu machen, aber es ist noch nicht da.


Und das ist es immer noch nicht.
hugo der hungrige

0

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.


Vielen Dank! Halten Sie es auf dem Laufenden. Es wäre sogar in Ordnung, wenn ich meinen Lieblings-GUI-Editor "sicher" für ausgewählte Dateien verwenden könnte. Ich könnte ohne die ordnungsgemäße Integration der Build-Tools auskommen (dies könnte über die Konsole erfolgen). Selbst das vorübergehende "Synchronisieren" von Dateien mit einer lokalen Windows-Kopie ist in Ordnung, solange dies transparent erfolgt. Ich nähere mich einem nervigen Punkt, an dem es zu schwierig ist, alle Dateien von CLI zu bearbeiten und im Auge zu behalten (zumindest für mich), und ich möchte einfach nur den gesamten Windows-Code an die WSL senden / kopieren , dort Werkzeuge laufen lassen.
Dan M.

0

Wenn Sie Linux-Befehle ausführen und mit Windows-Editoren bearbeiten möchten. Sie könnten 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

Jetzt unterstützt Visual Studio Code (wie ich es benutze). "WSL-Erweiterung", mit der Sie CRUD-Dateien / -Ordner (Erstellen, Lesen, Aktualisieren, Löschen) vom Linux-Speicherort ausführen können. Obwohl ich immer noch Probleme habe, das gleiche Setup für atom zu bekommen, war dies meine Wahl als Editor für die Rails-Anwendungsentwicklung auf der Linux-Plattform.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.