2017-03-04 01:59:01 +0000 2017-03-04 01:59:01 +0000
113
113

Was ist das Home-Verzeichnis auf Windows Subsystem für Linux?

Wenn ich bash unter Windows Subsystem für Linux starte, bringt es mich in das Verzeichnis

/mnt/c/Users/<username>

Wenn ich ls in diesem Verzeichnis eintrage, sehe ich die Verzeichnisse Desktop, Documents, usw., die ich mit dem Windows Datei-Explorer in C:\Users\<username> sehen kann. Da dies der Ort ist, an dem das Programm bash gestartet wurde, habe ich erwartet, dass dies mein Home-Verzeichnis ist, aber wenn ich entweder cd oder cd ~ eingebe, werde ich zu

/home/<username>

gebracht, das meine Datei .bashrc, .profile usw. enthält, die ich in meinem Home-Verzeichnis in einer Linux-Box erwarten würde. Außerdem kann ich bei der Eingabe von cd ../.. von hier aus die Verzeichnisse bin, etc usw. sehen, wiederum wie auf einem Linux-Rechner erwartet.

Zu all dem habe ich zwei Fragen:

  1. Was genau ist /mnt/c/Users/<username> im Vergleich zu C:\Users\<username>? Es scheint, dass sie ein und dasselbe sind - was ist also /mnt/c/?
  2. Wie kann ich die Dateien in /home/<username> mit dem Windows-Dateiexplorer anzeigen? Nicht, dass ich das jemals wirklich wollen würde - ich versuche nur, ein Gefühl dafür zu bekommen, wie Windows dieses Subsystem für Linux organisiert.

Antworten (11)

132
132
132
2017-12-29 12:07:21 +0000

Zu 2: Der aktuelle Pfad bezieht sich jetzt darauf, welche Distribution Sie aus dem Microsoft Store installiert haben, statt auf einen globalen Pfad. Für Ubuntu befindet er sich jetzt also unter:

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

Ich nehme an, dass sich die anderen Distributionen an einem ähnlichen Ort unter ihren jeweiligen Ordnern befinden werden unter:

%LOCALAPPDATA%\Packages\
33
33
33
2017-03-04 02:59:20 +0000
  1. /mnt/c ist genau dasselbe wie C:1./mnt/c` ist genau dasselbe wie . Es ist nur die Syntax, um von WSL dorthin zu gelangen.
  2. Schauen Sie in C:\Users\<username>\AppData\Local\Lxss\rootfs.
21
21
21
2018-08-09 12:58:03 +0000

Über das Dateisystem gemountet auf /mnt/c

  1. Was genau ist /mnt/c/Users/ im Vergleich zu C:\Users\? Es scheint, dass sie ein und dasselbe sind - was ist also /mnt/c/?

Im Gegensatz zu Windows verwendet Linux (und die anderen auf Unix basierenden Systeme) eine einzige Ordnerstruktur, unabhängig von der Anzahl der Festplatten, die Sie haben. Wenn Sie mehrere Festplatten haben, müssen alle diese Festplatten irgendwann in die Ordnerstruktur gemountet werden.

  • Typischerweise werden alle Festplatten (abgesehen von denen, die zum Booten des Systems verwendet werden) in einen Ordner namens /mnt oder /media

gemountet WSL hat einen speziellen Typ von Dateisystem namens DrvFS, der Ihnen Zugriff auf die in Windows verwendeten Festplatten gibt. Mit DrvFS können Sie nicht nur Ihr Windows-Dateisystem einbinden, sondern auch Netzwerkfestplatten und andere Medientypen.

  • In WSL wird standardmäßig die C:-Platte in Windows unter /mnt/c gemountet - Wenn Sie eine andere Platte haben, z. B. eine D:-Platte in Windows, wird sie unter /mnt/d

gemountet Die Dateien, die Sie in /mnt/c sehen, sind die gleichen, die Sie in C: haben. Wenn Sie eine Datei ändern, werden Sie die Änderungen auch in Windows sehen.

Sie können den Befehl mount verwenden, um auf andere Medientypen zuzugreifen (z. B. Wechsellaufwerke oder Netzwerkfreigaben).


Über den Speicherort von /home/<username>

  1. Wie kann ich die Dateien in /home/ mit dem Windows-Dateiexplorer anzeigen? Nicht, dass ich das jemals wirklich wollen würde - ich versuche nur, ein Gefühl dafür zu bekommen, wie Windows diese Subsystem für Linux-Sache organisiert.

In WSL befindet sich das gesamte Linux-Dateisystem unter einem Windows-Ordner. Der Ort des Ordners hängt von der Version von Windows und der WSL-Distribution ab, die Sie verwenden.

  • Initiale Versionen von WSL speichern das Linux-Dateisystem in %LOCALAPPDATA%\Lxss\rootfs
  • Wsl-Distributionen, die aus dem Windows Store installiert werden, verwenden ab Windows Build 16215 (Mitte 2017) einen Ordner wie %LOCALAPPDATA%\Packages\...\LocalState\rootfs. Der Name des Pakets variiert je nach Distribution (z. B. ist er bei Ubuntu anders als bei Debian)
  • Linux-Distributionen, die mit anderen Tools installiert werden, wie z. B. lxRunOffline oder WSL-DistroLauncher können das Linux-Dateisystem an einem beliebigen Ort speichern.

Sie können viele Optionen, um den Speicherort des WSL-Ordners zu erfahren ankreuzen. Ich denke, die einfachste Option ist zum Beispiel die Verwendung von lxRunOffline , um den Installationsordner zu erfahren.

## 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, ist die /home/<username> unter <installation folder>\rootfs\home\username.

  • Wenn Ihr Installationsordner z. B. c:\wsl\ubuntu lautet, befindet sich das /home/<username> unter c:\wsl\ubuntu\rootfs\home\username

HINWEIS: Sowohl Linux als auch Windows speichern Dateiberechtigungen auf unterschiedliche Weise. Heutzutage speichert die 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-Programme die Linux-Berechtigungen beschädigen, ohne es zu bemerken.

7
7
7
2019-02-20 18:35:13 +0000

Um in der Bash das aktuelle Verzeichnis im Windows Datei-Explorer anzuzeigen, geben Sie einfach ein:

explorer.exe .

Lassen Sie das “.” nicht weg.

Dadurch wird der Windows-Explorer im aktuellen Verzeichnis geöffnet und Sie können sehen, wo sich alles im Verhältnis zum Rest Ihres Windows-Systems befindet.

6
6
6
2018-07-16 08:06:17 +0000

Ich nehme an, dass es davon abhängt, auf welchem Windows-Build Sie sind, aber bei mir im Jahr 2018 auf Windows 10 Pro 64-Bit, Version 1709 (OS Build 16299.522) und auch Version 1803 (OS Build 17134. 165) [ein Windows-Update fand ironischerweise statt, als ich dies tippte] ist der Speicherort immer noch:

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

Der Trick ist, dass Sie bei C:\Users\<username>\AppData\Local keinen Ordner lxss sehen (es sei denn, Sie haben zufällig “Geschützte Betriebssystemdateien ausblenden (empfohlen)” in Ihren Ordneroptionen deaktiviert).

Geben Sie jedoch einfach \lxss in die Adressleiste des Windows Explorers ein, und Sie werden zu dem Ordner geführt.

(Beachten Sie, dass ich kein %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc oder etwas Ähnliches hatte, das in Michael Bonds Antwort erwähnt wurde)

Update

Es stellte sich heraus, dass es eine Legacy WSL gibt, die ich installiert hatte. Jetzt wird WSL über eine Microsoft-Store-App bereitgestellt. Es gibt Versionen für Ubuntu 18.04 LTS und mittlerweile auch für einige andere Linux-Varianten (z.B. Debian). Wenn Sie auf dem neuesten Stand sein wollen, sollten Sie legacy WSL deinstallieren und die Microsoft store version installieren.

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

4
4
4
2018-01-15 12:07:42 +0000
  1. Erstellen Sie mit der WSL-Bash-Konsole in Ihrem Home-Verzeichnis eine Datei mit einem beliebigen spezifischen Namen, z. B. “test_here.txt”.
  2. Suchen Sie dann mit dem Windows Explorer über das Suchfeld nach der Datei test_here.txt.
  3. Klicken Sie mit der rechten Maustaste auf die gefundene Datei > Dateispeicherort öffnen.
3
3
3
2019-11-16 15:21:34 +0000

Mit dem aktuellen Windows 10 Insider (Fast Ring: Windows 10 Build 19025.1) können Sie Ihre Distro als Netzlaufwerk einbinden. WSL ist als wls$ erreichbar, der Pfad ist Ihr Distributionsname (wsl -l -q).

Zum Beispiel net use Z: \wsl$\Debian /PERSISTENT:YES

2
2
2
2019-01-11 16:56:17 +0000

Vier Schritte für Windows 10 Pro, um Ihr Debian/Ubuntu/OpenSUSE $HOME an das Startmenü von Windows anzuheften:

  1. Starten Sie im Startmenü den Datei-Explorer
  2. Geben Sie in der Adressleiste (nicht Suchleiste) %LOCALAPPDATA% ein.
  3. Suchen Sie in der Suchleiste nach Ihrem $HOME-Verzeichnisnamen, in meinem Fall war es ekenny. Es wird etwa 3 Versionen davon geben, aber Sie wollen die mit dem wirklich langen Pfad.
  4. Klicken Sie mit der rechten Maustaste auf Ihr Home-Verzeichnis und klicken Sie auf “Pin to Start”.

Jetzt haben Sie Ihr Home-Verzeichnis an Ihr Startmenü angeheftet. Ich habe versucht, eine Verknüpfung zu erstellen, aber das führt zu nichts Verständlichem.

0
0
0
2019-12-10 11:31:19 +0000

Wenn Sie Ihre Distribution mit Chocolatey installiert haben, lautet der Pfad zum Home-Verzeichnis:

C:\ProgramData\chocolatey\lib\wsl-<distribution-name>\tools\unzipped\rootfs\home

Zum Beispiel für Ubuntu 18.04 :

C:\ProgramData\chocolatey\lib\wsl-ubuntu-1804\tools\unzipped\rootfs\home
0
0
0
2019-12-19 09:08:46 +0000

Bei meinem Setup (WSL Ubuntu unter der “Windows 10 Entwicklungsumgebung”, heruntergeladen von https://developer.microsoft.com/en-us/windows/downloads/virtual-machines ) war der AppData-Ordner standardmäßig versteckt. Also musste ich:

  • Windows-Explorer öffnen
  • zu `C:\Users\UserBei meinem Setup (WSL Ubuntu unter der “Windows 10 Entwicklungsumgebung”, heruntergeladen von [ https://developer.microsoft.com/en-us/windows/downloads/virtual-machines ]0x3&) war der AppData-Ordner standardmäßig versteckt. Also musste ich:

  • Windows-Explorer öffnen

  • zu gehen

  • view auf dem Menü auswählen

  • hidden items ankreuzen

  • dann erscheint der Ordner AppData unter C:\Users\User

  • und ich habe mein /home/user unter C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs\home\user gefunden (wobei * wahrscheinlich ein lokaler Code oder versionsabhängiger Code irgendeiner Art ist)

Keine Ahnung, warum es so versteckt ist.

0
0
0
2019-04-15 11:34:10 +0000

Ich musste nur /etc/environment finden, indem ich unter Ubuntu 16.04 in den Windows 10 NTFS-Speicher schaute. Ich habe es hier gefunden:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ich habe /mnt/c/ in C:Ich musste nur/etc/environment` finden, indem ich unter Ubuntu 16.04 in den Windows 10 NTFS-Speicher schaute. Ich habe es hier gefunden:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ich habe /mnt/c/ in für die Windows-Nomenklatur geändert.
  • Ich habe auch alle Vorkommen von / in Ich musste nur/etc/environment` finden, indem ich unter Ubuntu 16.04 in den Windows 10 NTFS-Speicher schaute. Ich habe es hier gefunden:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ich habe /mnt/c/ in C:Ich musste nur/etc/environment` finden, indem ich unter Ubuntu 16.04 in den Windows 10 NTFS-Speicher schaute. Ich habe es hier gefunden:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ich habe /mnt/c/ in für die Windows-Nomenklatur geändert.
  • Ich habe auch alle Vorkommen von / in aus demselben Grund geändert.
  • Sie müssen USER_NAME durch Ihren Windows-Benutzernamen ersetzen.
  • Ich musste sudo -H Nautilus verwenden, um die Berechtigungen zum Anzeigen der in WSL gespeicherten Benutzerdateien zu erhalten.
  • Niemals aktualisieren Sie Ihre Linux-Dateien in WSL mit einer Windows-Anwendung. Es wird Ihre Linux-Daten beschädigen.

Von der Linux (Ubuntu 16.04) Seite aus würde die Nomenklatur lauten:

$ 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