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

Qual è la directory home su Windows Subsystem for Linux?

Quando avvio bash su Windows Subsystem for Linux, mi porta nella directory

/mnt/c/Users/<username>

Quando digito ls questa directory, vedo le directory Desktop, Documents, etc. che posso vedere sono in C:\Users\<username> usando l'Esplora File di Windows. Dato che è qui che il programma bash è partito, mi aspettavo che fosse la mia home directory, ma quando digito cd o cd ~ vengo portato a

/home/<username>

che contiene il mio file .bashrc, .profile ecc. che mi aspetterei di trovare nella mia home directory in una scatola Linux. Inoltre, inserendo cd ../.. da qui posso vedere le directory bin, etc e così via, di nuovo come ci si aspetta su una macchina Linux.

Ho due domande riguardo a tutto questo:

  1. Cos'è esattamente /mnt/c/Users/<username> rispetto a C:\Users\<username>? Sembra che siano la stessa cosa - quindi cos'è /mnt/c/?
  2. Come posso vedere i file in /home/<username> usando Windows File Explorer? Non che io voglia davvero farlo—-sto solo cercando di capire come Windows sta organizzando questa cosa del Subsystem for Linux.

Risposte (11)

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

Per 2: Il percorso attuale è ora legato a quale distribuzione avete installato dal Microsoft Store piuttosto che un percorso globale. Quindi, per Ubuntu ora si trova a:

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

Presumo che le altre distribuzioni saranno in una posizione simile sotto le loro rispettive cartelle sotto:

%LOCALAPPDATA%\Packages\
33
33
33
2017-03-04 02:59:20 +0000
  1. /mnt/c è esattamente lo stesso di C:1./mnt/c` è esattamente lo stesso di . È solo la sintassi per arrivarci da WSL.
  2. Guarda in C:\Users\<username>\AppData\Local\Lxss\rootfs.
21
21
21
2018-08-09 12:58:03 +0000

Sul filesystem montato su /mnt/c

  1. Cos'è esattamente /mnt/c/Users/ rispetto a C:Users\? Sembra che siano la stessa cosa - quindi cos'è /mnt/c/?

Al contrario di Windows, Linux (e gli altri sistemi basati su Unix) usano una singola struttura di cartelle indipendente dal numero di dischi che hai. Se hai più dischi, tutti questi dischi devono essere montati nella struttura di cartelle ad un certo punto.

  • Tipicamente, tutti i dischi (diversi da quelli usati per avviare il sistema) sono montati in una cartella chiamata /mnt o /media

WSL ha un tipo speciale di filesystem chiamato DrvFS che ti dà accesso ai dischi usati in Windows. Puoi usare DrvFS per montare non solo il tuo filesystem di windows, ma anche i dischi di rete e altri tipi di media.

  • In WSL, per default, il disco C: in windows è montato sotto /mnt/c
  • Se hai un altro disco, per esempio un disco D: in windows, sarà montato sotto /mnt/d

I file che puoi vedere in /mnt/c sono gli stessi che hai in C:. Se modificate qualche file, otterrete le modifiche anche in Windows.

Puoi usare il comando mount per accedere ad altri tipi di media (per esempio unità rimovibili o condivisioni di rete).


Sulla posizione di /home/<username>

  1. Come posso visualizzare i file in /home/ usando l'Esplora file di Windows? Non che io voglia davvero farlo– sto solo cercando di capire come Windows sta organizzando questa cosa del Subsystem for Linux.

In WSL, tutto il filesystem linux si trova sotto una cartella di Windows. La posizione della cartella dipende dalla versione di Windows e dalla distribuzione WSL che stai usando.

  • Le versioni iniziali di WSL memorizzano il filesystem linux in %LOCALAPPDATA%\Lxss\rootfs
  • Le distribuzioni WSL installate dal Windows Store , a partire da Windows Build 16215 (metà del 2017), usano una cartella come %LOCALAPPDATA%\Packages\...\LocalState\rootfs. Il nome del pacchetto varia a seconda della distribuzione (ad esempio è diverso per Ubuntu che per Debian)
  • Distribuzioni Linux installate utilizzando altri strumenti , come lxRunOffline o WSL-DistroLauncher possono memorizzare il filesystem linux in qualsiasi posizione.

Puoi controllare molte opzioni per conoscere la posizione della cartella WSL . Per esempio, penso che l'opzione più semplice sia usare lxRunOffline per conoscere la cartella di installazione.

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

Una volta che conosci la posizione della cartella di installazione, la /home/<username> è sotto <installation folder>\rootfs\home\username.

  • Per esempio, se la tua cartella di installazione è c:\wsl\ubuntu
  • lo /home/<username> è in c:\wsl\ubuntu\rootfs\home\username

NOTA: Sia Linux che Windows memorizzano i permessi dei file in modi diversi. Al giorno d'oggi, il WSL DrvFS memorizza i permessi di Linux come Streams (metadati) allegati ai file che puoi vedere in Windows. Microsoft non raccomanda di modificare i file linux usando programmi Windows. È possibile che alcune applicazioni Windows danneggino i permessi linux senza accorgersene.

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

In Bash, per visualizzare la directory corrente in Windows File Explorer basta inserire:

explorer.exe .

Non tralasciare il “.”.

Questo aprirà windows explorer nella cartella corrente e potrete vedere dove tutto è in relazione al resto del vostro sistema Windows.

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

Suppongo che potrebbe dipendere da quale build di windows sei su, ma per me nel 2018 su Windows 10 Pro 64-bit, Versione 1709 (OS Build 16299.522) e anche Versione 1803 (OS Build 17134. 165) [un aggiornamento di windows si è verificato ironicamente mentre stavo scrivendo questo] la posizione è ancora:

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

Il trucco è quando sei a C:\Users\<username>\AppData\Local non vedrai una cartella lxss (a meno che tu non abbia deselezionato “Nascondi i file protetti del sistema operativo (consigliato)” nelle tue opzioni cartella).

Comunque basta aggiungere \lxss nella barra degli indirizzi di windows explorer e vi porterà alla cartella.

(Nota che non avevo non un %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc o qualcosa di simile che è stato menzionato nella risposta di Michael Bonds)

Aggiornamento

Risulta che c'è il WSL legacy che è quello che avevo installato. Ora WSL è fornito tramite un'app del negozio Microsoft. Ci sono versioni per Ubuntu 18.04 LTS e ora anche alcune altre versioni di Linux (ad esempio Debian). Se volete essere aggiornati potreste voler disinstallare la WSL legacy e installare la versione Microsoft store version .

Dove si trova la tua cartella home dipenderà da quale di questi tipi di WSL hai installato.

4
4
4
2018-01-15 12:07:42 +0000
  1. Usando la console WSL bash, nella vostra home directory, create un file con un nome specifico arbitrario come “test_here.txt”.
  2. Poi usando Windows Explorer, utilizzando la casella di ricerca, cercate il file test_here.txt.
  3. Sul file trovato > clicca con il tasto destro > Apri la posizione del file.
3
3
3
2019-11-16 15:21:34 +0000

Con l'attuale Windows 10 Insider (Fast ring: Windows 10 build 19025.1) puoi montare la tua distro come unità di rete. WSL è accessibile come wls$, il percorso è il nome della tua distribuzione (wsl -l -q).

Per esempio net use Z: \wsl$\Debian /PERSISTENT:YES

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

Quattro passi per windows 10 pro per appuntare la tua $HOME di Debian/Ubuntu/OpenSUSE al menu di avvio di Windows:

  1. Dal menu start avviare Esplora file
  2. Nella barra degli indirizzi (non nella barra di ricerca) digitare %LOCALAPPDATA%.
  3. Nella barra di ricerca cercate il nome della vostra directory $HOME, nel mio caso era ekenny. Ci saranno circa 3 versioni di questo, ma voi volete quella con il percorso molto lungo.
  4. Cliccate con il tasto destro del mouse sulla vostra home directory e cliccate “Pin to Start”.

Ora hai la tua home directory appuntata al menu start. Ho provato a creare un collegamento, ma non va da nessuna parte in modo comprensibile.

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

Se hai installato la tua distribuzione con Chocolatey , il percorso della home directory è:

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

Per esempio per Ubuntu 18.04 :

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

Sulla mia configurazione (WSL Ubuntu sotto il “Windows 10 development environment” scaricato da https://developer.microsoft.com/en-us/windows/downloads/virtual-machines ) la cartella AppData era nascosta di default. Quindi ho dovuto:

  • aprire windows explorer
  • andare su `C:\Users\UserSulla mia configurazione (WSL Ubuntu sotto il “Windows 10 development environment” scaricato da [ https://developer.microsoft.com/en-us/windows/downloads/virtual-machines ]0x3&) la cartella AppData era nascosta di default. Quindi ho dovuto:

  • aprire windows explorer

  • andare su

  • selezionare view sul menu

  • controllare hidden items

  • poi la cartella AppData appare sotto C:\Users\User

  • e ho trovato il mio /home/user sotto C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs\home\user (dove * è probabilmente un codice locale o un codice dipendente dalla versione di qualche tipo)

Non so perché sia nascosto così.

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

Avevo solo bisogno di trovare /etc/environment usando Ubuntu 16.04 cercando nello storage NTFS di Windows 10. L'ho trovato qui:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ho cambiato /mnt/c/ in C:Avevo solo bisogno di trovare/etc/environment` usando Ubuntu 16.04 cercando nello storage NTFS di Windows 10. L'ho trovato qui:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ho cambiato /mnt/c/ in per la nomenclatura di Windows.
  • Ho anche cambiato tutte le occorrenze di / in Avevo solo bisogno di trovare/etc/environment` usando Ubuntu 16.04 cercando nello storage NTFS di Windows 10. L'ho trovato qui:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ho cambiato /mnt/c/ in C:Avevo solo bisogno di trovare/etc/environment` usando Ubuntu 16.04 cercando nello storage NTFS di Windows 10. L'ho trovato qui:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Ho cambiato /mnt/c/ in per la nomenclatura di Windows.
  • Ho anche cambiato tutte le occorrenze di / in per la stessa ragione.
  • Devi sostituire USER_NAME con il tuo nome utente di Windows.
  • Ho dovuto usare sudo -H Nautilus per ottenere i permessi per vedere i file utente memorizzati in WSL.
  • NON aggiornare mai i tuoi file Linux in WSL usando un'applicazione Windows. Corromperà i vostri dati Linux.

Dal lato Linux (Ubuntu 16.04) la nomenclatura sarebbe:

$ 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