Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Es gibt eine Reihe von Überlegungen, die Sie beim Arbeiten zwischen Windows- und Linux-Dateisystemen berücksichtigen sollten. In diesem Handbuch haben wir einige davon beschrieben, darunter einige Beispiele für die Interoperabilitätsunterstützung für das Mischen von Windows- und Linux-basierten Befehlen.
Dateispeicherung und Leistung über Dateisysteme hinweg
Es wird davon abgeraten, mit Ihren Dateien systemübergreifend zu arbeiten, es sei denn, Sie haben einen bestimmten Grund dafür. Speichern Sie Ihre Dateien für die schnellste Leistungsgeschwindigkeit im WSL-Dateisystem, wenn Sie in einer Linux-Befehlszeile (Ubuntu, OpenSUSE usw.) arbeiten. Wenn Sie in einer Windows-Befehlszeile (PowerShell, Eingabeaufforderung) arbeiten, speichern Sie Ihre Dateien im Windows-Dateisystem.
Wenn Sie z. B. die WSL-Projektdateien speichern:
- Verwenden Sie das Stammverzeichnis des Linux-Dateisystems:
\\wsl$\<DistroName>\home\<UserName>\Project
- Verwenden Sie nicht das Stammverzeichnis des Windows-Dateisystems:
C:\Users\<UserName>\Project
oder/mnt/c/Users/<UserName>/Project$
Wenn Sie /mnt/
im Dateipfad einer WSL-Befehlszeile sehen, bedeutet dies, dass Sie von einem eingebundenen Laufwerk aus arbeiten. Das Windows-Dateisystem C:/ Laufwerk (C:\Users\<user name>\Project
) sieht also wie folgt aus, wenn es in einer WSL-Befehlszeile bereitgestellt wird: /mnt/c/Users/<user name>/Project$
Es ist möglich, Ihre Projektdateien auf einem bereitgestellten Laufwerk zu speichern, ihre Leistungsgeschwindigkeit wird jedoch verbessert, wenn Sie sie direkt auf dem \\wsl$
Laufwerk speichern.
Anzeigen Ihres aktuellen Verzeichnisses im Windows-Datei-Explorer
Sie können das Verzeichnis anzeigen, in dem Ihre Dateien gespeichert werden, indem Sie den Windows-Datei-Explorer über die Befehlszeile öffnen, indem Sie Folgendes verwenden:
explorer.exe .
Alternativ können Sie auch den Befehl verwenden: powershell.exe /c start .
Achten Sie darauf, den Punkt am Ende des Befehls hinzuzufügen, um das aktuelle Verzeichnis zu öffnen.
Um alle verfügbaren Linux-Distributionen und deren Stammdateisysteme im Windows-Datei-Explorer anzuzeigen, geben Sie in der Adressleiste Folgendes ein: \\wsl$
Dateinamen- und Verzeichnis-Groß-/Kleinschreibempfindlichkeit
Bei der Groß-/Kleinschreibung wird ermittelt, ob Großbuchstaben (FOO.txt) und Kleinbuchstaben (foo.txt) in einem Dateinamen oder Verzeichnis als unterschiedliche Zeichen behandelt werden (case-sensitive) oder als gleichwertig (case-insensitive). Windows- und Linux-Dateisysteme behandeln die Groß-/Kleinschreibung auf unterschiedliche Weise – Windows ist nicht case-sensitive, während Linux case-sensitive ist. Erfahren Sie mehr darüber, wie Sie die Groß-/Kleinschreibung anpassen, insbesondere bei der Montage von Datenträgern mit WSL, im Artikel zur Vorgehensweise „Groß-/Kleinschreibung anpassen“.
Interoperabilität zwischen Windows- und Linux-Befehlen
Windows- und Linux-Tools und -Befehle können austauschbar mit WSL verwendet werden.
- Führen Sie Windows-Tools (z.B. notepad.exe) über eine Linux-Befehlszeile (z.B. Ubuntu) aus.
- Führen Sie Linux-Tools (z. B. grep) über eine Windows-Befehlszeilenoberfläche (z. B. PowerShell) aus.
- Freigeben von Umgebungsvariablen zwischen Linux und Windows. (Build 17063+)
Ausführen von Linux-Tools über eine Windows-Befehlszeile
Führen Sie Linux-Binärdateien von der Windows-Eingabeaufforderung (CMD) oder PowerShell mit wsl <command>
(oder wsl.exe <command>
) aus.
Beispiel:
C:\temp> wsl ls -la
<- contents of C:\temp ->
Binärdateien werden auf diese Weise aufgerufen:
- Verwenden Sie dasselbe Arbeitsverzeichnis wie die aktuelle CMD- oder PowerShell-Eingabeaufforderung.
- Als WSL-Standardbenutzer ausführen.
- Verfügen Sie über die gleichen Administratorrechte für Windows wie den Anrufvorgang und das Terminal.
Der folgende wsl
Linux-Befehl (oder wsl.exe
) wird wie jeder Befehl in WSL behandelt. Dinge wie sudo, Pipelining und Umleitung von Dateien funktionieren.
Beispiel für die Verwendung von sudo zum Aktualisieren Ihrer Standardmäßigen Linux-Verteilung:
C:\temp> wsl sudo apt-get update
Ihr Standardmäßiger Linux-Verteilungsbenutzername wird nach dem Ausführen dieses Befehls aufgelistet, und Sie werden nach Ihrem Kennwort gefragt. Nachdem Sie Ihr Kennwort richtig eingegeben haben, lädt Ihre Verteilung Updates herunter.
Mischen von Linux- und Windows-Befehlen
Hier sind einige Beispiele für das Mischen von Linux- und Windows-Befehlen mit PowerShell.
Wenn Sie den Linux-Befehl ls -la
zum Auflisten von Dateien und dem PowerShell-Befehl findstr
verwenden möchten, um die Ergebnisse nach Wörtern zu filtern, die "git" enthalten, kombinieren Sie die Befehle:
wsl ls -la | findstr "git"
Wenn Sie den PowerShell-Befehl dir
zum Auflisten von Dateien und dem Linux-Befehl grep
verwenden möchten, um die Ergebnisse nach Wörtern zu filtern, die "git" enthalten, kombinieren Sie die Befehle:
C:\temp> dir | wsl grep git
Um den Linux-Befehl ls -la
zum Auflisten von Dateien und dem PowerShell-Befehl > out.txt
zum Drucken dieser Liste in eine Textdatei namens "out.txt" zu verwenden, kombinieren Sie die Befehle:
C:\temp> wsl ls -la > out.txt
Die übergebenen wsl.exe
Befehle werden ohne Änderung an den WSL-Prozess weitergeleitet. Dateipfade müssen im WSL-Format angegeben werden.
So verwenden Sie den Linux-Befehl ls -la
zum Auflisten von Dateien im /proc/cpuinfo
Linux-Dateisystempfad mithilfe von PowerShell:
C:\temp> wsl ls -la /proc/cpuinfo
So verwenden Sie den Linux-Befehl ls -la
zum Auflisten von Dateien im C:\Program Files
Windows-Dateisystempfad mithilfe von PowerShell:
C:\temp> wsl ls -la "/mnt/c/Program Files"
Ausführen von Windows-Tools unter Linux
WSL kann Windows-Tools direkt mithilfe von [tool-name].exe
über die WSL-Befehlszeile ausführen. Beispiel: notepad.exe
.
Anwendungen können auf diese Weise mit den folgenden Eigenschaften ausgeführt werden:
- Behalten Sie das Arbeitsverzeichnis größtenteils als WSL-Eingabeaufforderung bei: Ausnahmen werden unten erläutert.
- Haben dieselben Berechtigungsrechte wie der WSL-Prozess.
- Führen Sie als aktiver Windows-Benutzer aus.
- Sie werden im Windows-Task-Manager so angezeigt, als ob sie direkt über die CMD-Eingabeaufforderung ausgeführt werden.
Windows-Executables, die unter WSL ausgeführt werden, werden ähnlich wie native Linux-Executables behandelt – Piping, Umleitungen und sogar Hintergrundverarbeitung funktionieren wie erwartet.
Verwenden Sie zum Ausführen des Windows-Tools ipconfig.exe
, das Linux-Tool grep
, um die "IPv4"-Ergebnisse zu filtern, und das Linux-Tool cut
, um die Spaltenfelder zu entfernen. Geben Sie dazu in einer Linux-Distribution (z. B. Ubuntu) ein:
ipconfig.exe | grep IPv4 | cut -d: -f2
Versuchen wir ein Beispiel zum Mischen von Windows- und Linux-Befehlen. Öffnen Sie Ihre Linux-Distribution (z. B. Ubuntu) und erstellen Sie eine Textdatei: touch foo.txt
. Verwenden Sie nun den Linux-Befehl ls -la
zum Auflisten der direkten Dateien und deren Erstellungsdetails sowie das Windows PowerShell-Tool findstr.exe
, um die Ergebnisse zu filtern, sodass nur Die foo.txt
Datei in den Ergebnissen angezeigt wird:
ls -la | findstr.exe foo.txt
Windows-Tools müssen die Dateierweiterung enthalten, mit dem Dateifall übereinstimmen und ausführbar sein. Nicht ausführbare Dateien, einschließlich Batchskripts. CMD native Befehle wie dir
können mit cmd.exe /C
Befehl ausgeführt werden.
Listen Sie beispielsweise den Inhalt Des Windows-Dateisystems "C:\" auf, indem Sie Folgendes eingeben:
cmd.exe /C dir
Oder verwenden Sie den ping
Befehl, um eine Echoanforderung an die microsoft.com-Website zu senden:
ping.exe www.microsoft.com
Parameter werden an die nicht geänderte Windows-Binärdatei übergeben. Der folgende Befehl öffnet beispielsweise C:\temp\foo.txt
in notepad.exe
:
notepad.exe "C:\temp\foo.txt"
Dies funktioniert auch:
notepad.exe C:\\temp\\foo.txt
Freigeben von Umgebungsvariablen zwischen Windows und WSL mit WSLENV
WSL und Windows teilen eine spezielle Umgebungsvariable, die erstellt wurde, um Windows- und Linux-Distributionen auf WSL zu integrieren, WSLENV
.
Eigenschaften der WSLENV
Variablen:
- Es wird geteilt; es ist sowohl in Windows- als auch in WSL-Umgebungen vorhanden.
- Es handelt sich um eine Liste von Umgebungsvariablen, die zwischen Windows und WSL gemeinsam zu verwenden sind.
- Sie kann Umgebungsvariablen so formatieren, dass sie in Windows und WSL gut funktionieren.
- Sie kann den Fluss zwischen WSL und Win32 unterstützen.
Hinweis
Vor 17063 war PATH
nur die Windows-Umgebungsvariable, auf die WSL zugreifen konnte (sodass Sie win32 ausführbare Dateien unter WSL starten konnten). Ab 17063 WSLENV
wird unterstützt.
Bei WSLENV wird die Groß-/Kleinschreibung beachtet.
WSLENV-Flags
Es stehen vier Flags zur Verfügung, um zu beeinflussen, wie die Umgebungsvariable im WSLENV
übersetzt wird.
WSLENV
Flaggen:
-
/p
- übersetzt den Pfad zwischen WSL/Linux-Stilpfaden und Win32-Pfaden. -
/l
- gibt an, dass die Umgebungsvariable eine Liste von Pfaden ist. -
/u
– gibt an, dass diese Umgebungsvariable nur bei der Ausführung von WSL aus Win32 enthalten sein sollte. -
/w
– gibt an, dass diese Umgebungsvariable nur bei der Ausführung von Win32 von WSL eingeschlossen werden soll.
Kennzeichnungen können nach Bedarf kombiniert werden.
Weitere Informationen zu WSLENV, einschließlich häufig gestellter Fragen und Beispiele zum Festlegen des Werts von WSLENV auf eine Verkettung anderer vordefinierter Umgebungsvariablen, wobei jede mit einem Schrägstrich gefolgt von Flags versehen ist, die angeben, wie der Wert übersetzt und Variablen mit einem Skript übergeben werden. Dieser Artikel enthält auch ein Beispiel zum Einrichten einer Entwicklungsumgebung mit der Go-Programmiersprache, die für die Freigabe eines GOPATH zwischen WSL und Win32 konfiguriert ist.
Interoperabilität deaktivieren
Benutzer können die Möglichkeit zum Ausführen von Windows-Tools für eine einzelne WSL-Sitzung deaktivieren, indem sie den folgenden Befehl als root ausführen:
echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop
Um Windows-Binärdateien erneut zu aktivieren, beenden Sie alle WSL-Sitzungen, und führen Sie bash.exe erneut aus, oder führen Sie den folgenden Befehl als Root-Benutzer aus:
echo 1 > /proc/sys/fs/binfmt_misc/WSLInterop
Das Deaktivieren der Interoperabilität wird zwischen WSL-Sitzungen nicht beibehalten . Die Interoperabilität wird erneut aktiviert, wenn eine neue Sitzung gestartet wird.
Windows Subsystem for Linux