Was ist das Basisverzeichnis des Windows-Subsystems für Linux?

86

Wenn ich bashunter Windows Subsystem für Linux starte, werde ich in das Verzeichnis verschoben

/mnt/c/Users/<username>

Als ich lsdieses Verzeichnis, ich die Verzeichnisse sehe Desktop, Documentsetc. , dass ich in ist sehen C:\Users\<username>mit der Windows - Datei - Explorer. Da hier das bashProgramm gestartet wurde, erwartete ich, dass dies mein Ausgangsverzeichnis ist, aber wenn ich entweder eingebe cdoder zu etwas cd ~gebracht werde

/home/<username>

die enthält meine .bashrc, .profileusw. Datei , die ich erwarten würde in meinem Home - Verzeichnis in einer Linux - Box zu finden. Außerdem Eingabe cd ../..von hier aus kann ich die Verzeichnisse sehen bin, etcund so weiter, wieder auf einer Linux - Box erwartet.

Ich habe dazu zwei Fragen:

  1. Womit genau wird /mnt/c/Users/<username>verglichen C:\Users\<username>? Es scheint, als wären sie ein und dasselbe - also was ist das /mnt/c/?
  2. Wie kann ich die Dateien im /home/<username>Windows-Datei-Explorer anzeigen ? Nicht, dass ich es jemals wirklich wollte - ich versuche nur ein Gefühl dafür zu bekommen, wie Windows dieses Subsystem für Linux organisiert.
bcf
quelle

Antworten:

102

Für 2: Der aktuelle Pfad bezieht sich jetzt auf die Distribution, die Sie aus dem Microsoft Store installiert haben, und nicht mehr auf einen globalen Pfad. Für Ubuntu befindet es sich nun unter:

%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

Ich gehe davon aus, dass sich die anderen Distributionen an einem ähnlichen Ort in ihren jeweiligen Ordnern befinden werden:

%LOCALAPPDATA%\Packages\
Michael Bond
quelle
11
Findet jemand anderes diese Praxis störend? Soll mein HOME-Ordner nicht der EINE sichere Ort für MEINE Daten in einem Repo sein? Bei diesem Ansatz wird ein defekter Repo- und Neuinstallationsvorgang durchgeführt, ohne dass versucht wird, MEINE DATEN zu schützen, UND es wird ausgeblendet, wenn ich bereits ein WIRKLICHES Zuhause habe. Warum werden dort keine Daten gespeichert? Dies ist umso gefährlicher, als wir jetzt aufgefordert werden, Distributionen (WLinux) auszuprobieren / zu verwenden / auszutauschen. Es fühlt sich wirklich so an, als hätte jemand die ganze Sache nicht durchdacht.
Rainabba
In meinem Fall (1809) heißt der Ordner CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
jao
2
Wichtiger Hinweis: Sie sollten immer noch nicht mit Windows-Tools in Linux-Dateien stöbern. Siehe: blogs.msdn.microsoft.com/commandline/2016/11/17/… (siehe auch den Blog-Beitrag selbst)
coltoneakins
Fantastisch. ein weiterer grund, warum git für windows / mingw immer noch besser funktioniert ... viel mehr überlegungen für die tägliche arbeit. Gibt es eine Möglichkeit, es richtig zuzuordnen?
Enorl76
1
@rainabba Beim ersten Erröten stimme ich zu, aber nach einigem Überlegen entscheide ich mich immer noch für Windows anstatt für Ubuntu. Als solches behandle ich WSL als eine Möglichkeit, auf Linux-Tools zuzugreifen, aber mein Windows-Dateisystem weiterhin als erstklassigen Bürger. So /mnt/c/ist es, wo ich alles in der WSL speichere. Ich würde es lieben, wenn die WSL auf LWS umgestellt würde. Das heißt, es wäre fantastisch, wenn wir alle Ubuntu mit Linux-Subsystemen für Windows ausführen würden, um eine vollständige, in Ubuntu integrierte Windows 10-Kopie auszuführen. Ich weiß, das wäre viel schwieriger, aber man kann träumen.
Chev
29
  1. /mnt/cist genau das gleiche wie C:\. Es ist nur die Syntax, um von der WSL darauf zuzugreifen.
  2. Schau rein C:\Users\<username>\AppData\Local\Lxss\rootfs.
Joseph Sible-Reinstate Monica
quelle
8
Warnung: blogs.msdn.microsoft.com/commandline/2016/11/17/… das ist der richtige Ort, aber ändern Sie nichts.
chx
6
Ab 2018 ist diese Antwort nicht mehr gültig. Siehe @ MichaelBonds Antwort.
dr01
11
Jetzt ist es vorbei. C:\Users\[USERNAME]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_[CODE]\LocalState\rootfs\ Sie werden vielleicht merken, wie schlimm es ist, wenn Sie /manuell bearbeiten
mementototem
Für den einfachen Zugriff über Copy-Pasta: `% LOCALAPPDATA% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_ [CODE] \ LocalState \ rootfs`
Zweig
Beachten Sie, dass der Ordner lxss im Datei-Explorer ausgeblendet wird, sofern Sie nicht "Ordneroptionen> Ansicht: Erweiterte Einstellungen: Geschützte Betriebssystemdateien ausblenden (empfohlen)" deaktivieren. Sie können den Ordner jedoch auch dann im Datei-Explorer öffnen, wenn Sie ihn in den Ordnerpfad eingeben.
Daryn
17

Über das Dateisystem gemountet auf /mnt/c

  1. Was genau ist / mnt / c / Users / im Vergleich zu C: \ Users \? Es sieht so aus, als wären sie ein und dasselbe - also, was ist / mnt / c /?

Im Gegensatz zu Windows verwenden Linux (und die anderen auf Unix basierenden Systeme) eine einzelne Ordnerstruktur, unabhängig von der Anzahl der vorhandenen Festplatten. Wenn Sie mehrere Festplatten haben, alle diese Scheiben müssen mich montiert in der Ordnerstruktur an einem gewissen Punkt.

  • In der Regel werden alle Datenträger (die nicht zum Booten des Systems verwendet werden) in einem Ordner mit dem Namen oder angehängt/mnt/media

WSL verfügt über ein spezielles Dateisystem namens DrvFS, mit dem Sie auf die in Windows verwendeten Datenträger zugreifen können. Mit DrvFS können Sie nicht nur Ihr Windows-Dateisystem, sondern auch Netzwerklaufwerke und andere Medientypen bereitstellen.

  • In der WSL ist die C: Festplatte in Windows unter gemountet/mnt/c
  • Wenn Sie eine andere Festplatte haben, zum Beispiel eine D:Festplatte in Windows, wird diese unter gemountet/mnt/d

Die Dateien, die Sie sehen können, /mnt/csind die gleichen, die Sie in haben C:. Wenn Sie eine Datei ändern, werden die Änderungen auch in den Fenstern angezeigt.

Sie können den mountBefehl verwenden, um auf andere Medientypen zuzugreifen (z. B. Wechseldatenträger oder Netzwerkfreigaben).


Über den Standort von /home/<username>

  1. Wie kann ich die Dateien in / home / mit dem Windows-Datei-Explorer anzeigen? Nicht, dass ich es jemals wirklich wollte - ich versuche nur ein Gefühl dafür zu bekommen, wie Windows dieses Subsystem für Linux organisiert.

In WSL befindet sich das gesamte Linux-Dateisystem in einem Windows-Ordner. Der Speicherort des Ordners hängt von der Windows-Version und der von Ihnen verwendeten WSL-Distribution ab.

  • Erste Versionen von WSL speichern das Linux-Dateisystem in%LOCALAPPDATA%\Lxss\rootfs
  • WSL-Distributionen , die ab Windows Build 16215 (Mitte 2017) aus dem Windows Store installiert wurden , verwenden einen Ordner wie den folgenden %LOCALAPPDATA%\Packages\...\LocalState\rootfs. Der Name des Pakets variiert je nach Distribution (zB ist es für Ubuntu anders als für Debian)
  • Linux-Distributionen, die mit anderen Tools wie lxRunOffline oder WSL-DistroLauncher installiert wurden, können das Linux-Dateisystem an einem beliebigen Ort speichern.

Möglicherweise überprüfen Sie viele Optionen, um den Speicherort des WSL-Ordners zu ermitteln . Ich denke, die einfachste Möglichkeit ist zum Beispiel, lxRunOffline zu verwenden, um den Installationsordner zu kennen.

## You can use lxrunoffline to check which WSL distributions have installed
## using:   lxrunoffline list

C:\> lxrunoffline list
backup
Ubuntu-18.04    

## And you can use it to get the location of any of these WSL installations
## using:   lxrunoffline get-dir -n <name of distribution>

C:\> lxrunoffline get-dir -n backup
c:\wsl\installed\backup

C:\> lxrunoffline get-dir -n Ubuntu
C:\Users\Jaime\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState

Sobald Sie den Speicherort des Installationsordners kennen, /home/<username>befindet sich der unter <installation folder>\rootfs\home\username.

  • Zum Beispiel, wenn Ihr Installationsordner ist c:\wsl\ubuntu
  • das /home/<username>ist inc:\wsl\ubuntu\rootfs\home\username

HINWEIS: Sowohl Linux als auch Windows speichern Dateiberechtigungen auf unterschiedliche Weise. Heutzutage speichert das WSL-DrvFS die Linux-Berechtigungen als Streams (Metadaten), die an die Dateien angehängt sind, die Sie in Windows sehen können. Microsoft empfiehlt nicht, Linux-Dateien mit Windows-Programmen zu ändern. Es ist möglich, dass einige Windows-Anwendungen die Linux-Berechtigungen beschädigen, ohne es zu bemerken.

Jaime
quelle
5

Ich nehme an, es hängt davon ab, auf welchem ​​Windows-Build Sie sich befinden, aber für mich kam es 2018 auf Windows 10 Pro 64-Bit, Version 1709 (OS Build 16299.522) und auch Version 1803 (OS Build 17134.165) [ironischerweise zu einem Windows-Update, als ich tippte dies] der Ort ist immer noch:

C:\Users\<username>\AppData\Local\lxss

Der Trick ist, wenn Sie gerade dabei sind C:\Users\<username>\AppData\Local, keinen lxssOrdner zu sehen (es sei denn, Sie haben in Ihren Ordneroptionen das Kontrollkästchen "Geschützte Betriebssystemdateien ausblenden (empfohlen)" deaktiviert).

Hängen Sie jedoch einfach \lxssin der Windows Explorer-Adressleiste an und Sie gelangen in den Ordner.

(Hinweis Ich habe nicht haben ein %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgscoder ähnliches , die in Michael Bonds Antwort erwähnt wurde)

Aktualisieren

Es stellte sich heraus, dass es eine ältere WSL gibt, die ich installiert hatte. Jetzt wird die WSL über eine Microsoft Store App bereitgestellt. Es gibt Versionen für Ubuntu 18.04 LTS und jetzt auch einige andere Linux-Varianten (zB Debian). Wenn Sie auf dem neuesten Stand sein möchten, können Sie ältere WSL- Versionen deinstallieren und die Microsoft Store-Version installieren .

Wo sich Ihr Home-Ordner befindet, hängt davon ab, welche dieser WSL-Typen Sie installiert haben.

Benutzer
quelle
4
  1. Erstellen Sie mit der WSL-Bash-Konsole in Ihrem Ausgangsverzeichnis eine Datei mit einem beliebigen Namen, z. B. "test_here.txt".
  2. Suchen Sie dann im Windows Explorer über das Suchfeld nach der Datei test_here.txt.
  3. Klicken Sie in der gefundenen Datei mit der rechten Maustaste auf> Dateispeicherort öffnen.
Ellis
quelle
Ich habe es versucht. Es funktioniert nicht Ich sehe die Datei bei der Suche nicht. Wenn ich die Datei jedoch in / mnt / c / Users / <Benutzername> ablege, funktioniert sie offensichtlich.
Eamonn Kenny
Ich fürchte, ich habe die WSL ausprobiert, aber ich benutze sie nicht mehr. Ich fand es nicht sehr nützlich. (Ich verwende Cygwin täglich anstelle von WSL und finde es sehr nützlich.) Also kann ich es nicht mehr überprüfen, sorry;)
Ellis
Die Suche nach rootfs funktioniert. Von dort aus können Sie im unbuntu-Dateisystem navigieren.
21.
2

In vier Schritten kann Windows 10 Pro Debian / Ubuntu / OpenSUSE $ HOME mit dem Startmenü von Windows verbinden:

  1. Starten Sie über das Startmenü den Datei-Explorer
  2. Geben Sie in der Adressleiste (nicht in der Suchleiste)% LOCALAPPDATA% ein.
  3. Suchen Sie in der Suchleiste nach Ihrem $ HOME-Verzeichnisnamen, in meinem Fall war es ekenny. Es wird ungefähr 3 Versionen davon geben, aber Sie wollen die mit dem wirklich langen Weg.
  4. Klicken Sie mit der rechten Maustaste auf Ihr Home-Verzeichnis und klicken Sie auf "Zum Starten anheften".

Nun haben Sie Ihr Home-Verzeichnis an Ihr Startmenü angeheftet. Ich habe versucht, eine Verknüpfung zu erstellen, aber das ist nirgendwo verständlich.

Eamonn Kenny
quelle
0

Ich musste nur /etc/environmentmit Ubuntu 16.04 suchen in Windows 10 NTFS-Speicher zu finden. Ich habe es hier gefunden:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ich wechselte /mnt/c/zur C:\Windows-Nomenklatur.
  • Ich habe auch alle Vorkommen von /zu \aus demselben Grund geändert .
  • Sie müssen durch USER_NAMEIhren Windows-Benutzernamen ersetzen .
  • Ich musste verwenden sudo -H Nautilus, um Berechtigungen zum Anzeigen der in WSL gespeicherten Benutzerdateien zu erhalten.
  • NIEMALS Ihre aktualisieren Linux - Dateien in WSL eine Windows - Anwendung verwenden. Es wird Ihre Linux-Daten beschädigen .

Von der Linux-Seite (Ubuntu 16.04) wäre die Nomenklatur:

$ sudo cat /mnt/c/Users/USER_NAME/AppData/Local/Packages/CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc/LocalState/rootfs/etc/environment

PATH="/mnt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export LIBGL_ALWAYS_INDIRECT=Yes
export DISPLAY=localhost:0.0
WinEunuuchs2Unix
quelle
0

Mit dem aktuellen Windows 10 Insider (Fast Ring: Windows 10 Build 19025.1) können Sie Ihre Distribution als Netzwerklaufwerk einbinden. Auf die WSL kann zugegriffen werden, da wls$der Pfad Ihr Verteilungsname ist ( wsl -l -q).

Beispielsweise net use Z: \\wsl$\Debian /PERSISTENT:YES

Fohlen
quelle
Sind Sie sicher, dass dies auf WSL2 beschränkt ist? Ich dachte, ab 1903 könnten Sie den Inhalt der WSL-Dateistruktur von Windows aus untersuchen. Mit dieser Änderung wäre es möglich gewesen, einen Standort für das Kartennetzwerk zu erstellen.
Ramhound
Wie ich geschrieben habe, bin ich mir über WSL2 nicht sicher. Es gibt zwei Punkte: Einführung von WSL2 (ab Build 18432) und Distribution, die von WSL 2 unterstützt wird. Diese Funktion wird zusammen mit WSL2 angezeigt und funktioniert hoffentlich mit jeder Distribution.
Fohlen
1909 (WSL2) ist 18363.476, nicht 18432 (Insider Preview 20H1) es sei denn du sagst, dies ist nur auf 20H1 Builds?
Ramhound
-1

Geben Sie in Bash Folgendes ein, um das aktuelle Verzeichnis im Windows-Datei-Explorer anzuzeigen:

explorer .

Lassen Sie das "." Nicht aus. Dadurch wird der Windows Explorer im aktuellen Ordner geöffnet und Sie können sehen, wo sich alles in Bezug auf den Rest Ihres Windows-Systems befindet.

Gary Barrett
quelle
Danke für den Beitrag, aber das funktioniert nur in Bash, nicht in WSL (WIndows Subsystem for Linux). Darum geht es in dieser Frage. Ich würde Ihnen raten, Ihre Antwort zu löschen, sonst wird sie möglicherweise abgelehnt.
rmcsharry
Dies funktioniert nicht in der WSL
Nicolai Anton Lynnerup