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

Wat is de home directory op Windows Subsystem for Linux?

Wanneer ik bash start op Windows Subsystem for Linux, laat het me vallen in de directory

/mnt/c/Users/<username>

Wanneer ik deze directory ls, zie ik de directories Desktop, Documents, enz. waarvan ik kan zien dat ze in C:\Users\<username> zitten met behulp van de Windows File Explorer. Daar dit de plaats is waar het bash programma startte, verwachtte ik dat dit mijn home directory was, maar wanneer ik cd of cd ~ intyp, kom ik in

/home/<username>

welke mijn .bashrc, .profile etc. bestand bevat welke ik zou verwachten te vinden in mijn home directory in een Linux box. Bovendien, als ik hier cd ../.. intik, kan ik de directories bin, etc enzovoort zien, wederom zoals verwacht op een Linux box.

Ik heb twee vragen over dit alles:

  1. Wat is /mnt/c/Users/<username> precies vergeleken met C:\Users\<username>? Het lijkt erop dat ze één en hetzelfde zijn - dus wat is /mnt/c/?
  2. Hoe kan ik de bestanden in /home/<username> bekijken met de Windows Bestandsverkenner? Niet dat ik dat ooit echt zou willen–Ik probeer alleen maar een idee te krijgen van hoe Windows dit Subsysteem voor Linux organiseert.

Antwoorden (11)

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

Voor 2: Het huidige pad is nu gerelateerd aan welke distributie je hebt geïnstalleerd vanuit de Microsoft Store in plaats van één globaal pad. Dus, voor Ubuntu is het nu te vinden op:

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

Ik neem aan dat de andere distributies op een vergelijkbare locatie onder hun respectievelijke mappen staan onder:

%LOCALAPPDATA%\Packages\
33
33
33
2017-03-04 02:59:20 +0000
  1. /mnt/c is precies hetzelfde als C:1./mnt/c` is precies hetzelfde als . Het is alleen de syntax om er vanuit WSL naar toe te gaan.
  2. Kijk in C:\Users\<username>\AppData\Local\Lxss\rootfs.
21
21
21
2018-08-09 12:58:03 +0000

Over het bestandssysteem gemount op /mnt/c

  1. Wat is precies /mnt/c/Users/ in vergelijking met C:\Users? Het lijkt erop dat ze één en hetzelfde zijn–dus wat is /mnt/c/?

In tegenstelling tot Windows, gebruiken Linux (en de andere systemen gebaseerd op Unix) een enkele mappenstructuur, onafhankelijk van het aantal schijven dat je hebt. Als je meerdere schijven hebt, moeten al deze schijven op een gegeven moment in de mappenstructuur gemount worden.

  • Normaal gesproken worden alle schijven (anders dan die gebruikt worden om het systeem op te starten) aangekoppeld in een map met de naam /mnt of /media

WSL heeft een speciaal type bestandssysteem, DrvFS genaamd, dat je toegang geeft tot de schijven die in windows gebruikt worden. Je kunt DrvFS gebruiken om niet alleen je windows bestandssysteem te mounten, maar ook netwerkschijven en andere mediatypen.

  • In WSL, standaard, is de C: schijf in windows gemount onder /mnt/c
  • Als je een andere schijf hebt, bijvoorbeeld een D: schijf in windows, zal deze gemount worden onder /mnt/d

De bestanden die je kunt zien in /mnt/c zijn dezelfde als die je hebt in C:. Als je een bestand wijzigt, krijg je de wijzigingen ook in windows te zien.

Je kunt het mount commando gebruiken om toegang te krijgen tot andere soorten media (b.v. verwisselbare schijven of netwerk shares).

  • *

Over de locatie van /home/<username>

  1. Hoe kan ik de bestanden in /home/ bekijken met de Windows Bestandsverkenner? Niet dat ik dat ooit zou willen–Ik probeer alleen maar een idee te krijgen hoe Windows dit Subsysteem voor Linux organiseert.

In WSL, bevindt het hele Linux bestandssysteem zich onder een Windows map. De locatie van de map hangt af van de versie van Windows en van de WSL-distributie die je gebruikt.

  • Initiële versies van WSL slaan het linux-bestandssysteem op in %LOCALAPPDATA%\Lxss\rootfs
  • WSL-distributies geïnstalleerd vanuit de Windows Store , vanaf Windows Build 16215 (medio 2017), gebruiken een map als %LOCALAPPDATA%\Packages\...\LocalState\rootfs. De naam van het pakket varieert afhankelijk van de distributie (het is bijvoorbeeld anders voor Ubuntu dan voor Debian)
  • Linux-distributies geïnstalleerd met behulp van andere tools , zoals lxRunOffline of WSL-DistroLauncher kunnen het linux-bestandssysteem op elke locatie opslaan.

U kunt veel opties aanvinken om de locatie van de WSL-map te weten . Ik denk bijvoorbeeld dat de makkelijkste optie is om lxRunOffline te gebruiken om de installatiemap te weten.

## 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

Zodra u de locatie van de installatiemap weet, staat de /home/<username> onder <installation folder>\rootfs\home\username.

  • Bijvoorbeeld, als uw installatiemap c:\wsl\ubuntu is - dan staat de /home/<username> in c:\wsl\ubuntu\rootfs\home\username

NOTE: Zowel Linux als Windows slaan de bestandspermissies op verschillende manieren op. Tegenwoordig slaat WSL DrvFS de Linux permissies op als Streams (metadata) gekoppeld aan de bestanden die je in Windows kunt zien. Microsoft raadt niet aan om Linux bestanden te wijzigen met Windows programma’s. Het is mogelijk dat sommige Windows programma’s de Linux permissies beschadigen zonder dat ze het merken.

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

In Bash, om de huidige directory in Windows File Explorer te zien, voert u gewoon in:

explorer.exe .

Laat de “.” niet weg.

Hierdoor wordt Windows Verkenner geopend in de huidige map en kun je zien waar alles zich bevindt ten opzichte van de rest van je Windows systeem.

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

Ik veronderstel dat het zou kunnen afhangen van welke windows build je bent, maar voor mij in 2018 op Windows 10 Pro 64-bit, Versie 1709 (OS Build 16299.522) en ook Versie 1803 (OS Build 17134. 165) [een Windows-update vond ironisch genoeg plaats terwijl ik dit typte] is de locatie nog steeds:

De truc is dat wanneer je op C:\Users\<username>\AppData\Local\lxss bent, je geen C:\Users\<username>\AppData\Local map zult zien (tenzij je toevallig “Beveiligde besturingssysteembestanden verbergen (aanbevolen)” hebt uitgevinkt in je mapopties).

Maar voeg gewoon lxss toe in de windows explorer adresbalk en het zal je naar de map brengen.

(Merk op dat ik niet een \lxss of iets dergelijks had dat in Michael Bonds antwoord werd genoemd)

Update

Blijkt dat er legacy WSL is en dat is wat ik geïnstalleerd had. Nu wordt WSL geleverd via een Microsoft store app. Er zijn versies voor Ubuntu 18.04 LTS en nu ook voor een paar andere smaken van Linux (bijv. Debian). Als u up-to-date wilt zijn kunt u misschien beter de oude WSL verwijderen en de Microsoft store versie installeren.

Waar uw thuismap is hangt af van welke van deze soorten WSL u geïnstalleerd heeft.

4
4
4
2018-01-15 12:07:42 +0000
  1. Maak met WSL bash console, in je home directory, een bestand aan met een willekeurige specifieke naam zoals “test_here.txt”.
  2. Gebruik dan Windows Verkenner, gebruik het zoekvak, zoek naar het bestand test_here.txt.
  3. Op het gevonden bestand klikt u met de rechtermuisknop > Bestandslocatie openen.
3
3
3
2019-11-16 15:21:34 +0000

Met de huidige Windows 10 Insider (Fast ring: Windows 10 build 19025.1) kun je je distro mounten als een netwerkstation. WSL is toegankelijk als wls$, het pad is je distributienaam (wsl -l -q).

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

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

Vier stappen voor windows 10 pro om uw Debian/Ubuntu/OpenSUSE $HOME aan het startmenu van Windows vast te pinnen:

  1. Start vanuit startmenu Bestandsbeheer
  2. In adresbalk (niet zoekbalk) type je %LOCALAPPDATA%.
  3. In de zoekbalk zoek je naar je $HOME mapnaam, in mijn geval was dat ekenny. Er zullen ongeveer 3 versies van zijn, maar je wilt degene met het lange pad.
  4. Klik met de rechtermuisknop op je home directory en klik op “Pin to Start”.

Nu heb je je home directory vastgemaakt aan je start menu. Ik heb geprobeerd een snelkoppeling te maken, maar dat leidt nergens toe.

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

Als je je distributie hebt geïnstalleerd met Chocolatey , is het pad naar de homedirectory:

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

Bijvoorbeeld voor Ubuntu 18.04 :

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

In mijn setup (WSL Ubuntu onder de “Windows 10 ontwikkelomgeving” gedownload van https://developer.microsoft.com/en-us/windows/downloads/virtual-machines ) was de AppData map standaard verborgen. Dus moest ik:

  • open windows explorer
  • ga naar `C:\Users\UserIn mijn setup (WSL Ubuntu onder de “Windows 10 ontwikkelomgeving” gedownload van [ https://developer.microsoft.com/en-us/windows/downloads/virtual-machines ]0x3&) was de AppData map standaard verborgen. Dus moest ik:

  • open windows explorer

  • ga naar

  • selecteer view op de meny

  • vink hidden items aan - dan verschijnt de map AppData onder C:\Users\User

  • en ik vond mijn /home/user onder C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs\home\user (waar * waarschijnlijk een lokale code of versie afhankelijke code is van een of ander soort)

Weet niet waarom het zo weggestopt is.

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

Ik moest alleen /etc/environment vinden met Ubuntu 16.04 kijkend naar Windows 10 NTFS opslag. Ik vond het hier:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ik veranderde /mnt/c/ in C:Ik moest alleen/etc/environment` vinden met Ubuntu 16.04 kijkend naar Windows 10 NTFS opslag. Ik vond het hier:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ik veranderde /mnt/c/ in voor Windows nomenclatuur.
  • Ik heb ook alle voorkomens van / veranderd in Ik moest alleen/etc/environment` vinden met Ubuntu 16.04 kijkend naar Windows 10 NTFS opslag. Ik vond het hier:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ik veranderde /mnt/c/ in C:Ik moest alleen/etc/environment` vinden met Ubuntu 16.04 kijkend naar Windows 10 NTFS opslag. Ik vond het hier:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ik veranderde /mnt/c/ in voor Windows nomenclatuur.
  • Ik heb ook alle voorkomens van / veranderd in om dezelfde reden.
  • Je moet USER_NAME vervangen door je Windows gebruikersnaam.
  • Ik moest sudo -H Nautilus gebruiken om rechten te krijgen om de in WSL opgeslagen gebruikersbestanden te bekijken.
  • NOOIT je Linux bestanden in WSL updaten met een Windows applicatie. Het zal uw Linux gegevens beschadigen.

Van de Linux (Ubuntu 16.04) kant zou de nomenclatuur zijn:

$ 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