Qual è la home directory sul sottosistema Windows per Linux?


87

Quando avvio bashsu Sottosistema Windows per Linux, mi lascia nella directory

/mnt/c/Users/<username>

Quando ho lsquesta directory, vedo le directory Desktop, Documentsecc. Che posso vedere sono in C:\Users\<username>Esplora file di Windows. Dato che è qui che è bashiniziato il programma, mi aspettavo che questa fosse la mia directory home, ma quando scrivo uno cdo cd ~sono portato a

/home/<username>

che contiene il mio file .bashrc, .profileecc. che mi aspetterei di trovare nella mia directory home in un box Linux. Inoltre, entrando cd ../..da qui posso vedere le directory bin, etce così via, sempre come previsto su un box Linux.

Ho due domande su tutto questo:

  1. Con cosa si /mnt/c/Users/<username>confronta esattamente C:\Users\<username>? Sembra che siano una cosa sola --- quindi cos'è /mnt/c/?
  2. Come posso visualizzare i file /home/<username>usando Esplora file di Windows? Non che avrei mai voluto --- Sto solo cercando di capire come Windows sta organizzando questo sottosistema per Linux.

Risposte:


103

Per 2: il percorso corrente è ora correlato a quale distribuzione è stata installata da Microsoft Store anziché a un percorso globale. Quindi, per Ubuntu ora si trova in:

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

Presumo che le altre distribuzioni si troveranno in una posizione simile nelle rispettive cartelle in:

%LOCALAPPDATA%\Packages\

11
Qualcun altro trova questa pratica inquietante? La mia cartella HOME non dovrebbe essere il SOLO posto sicuro per i MIEI dati all'interno di un repository? Con questo approccio, un repository rotto e la reinstallazione dei tubi flessibili I MIEI DATI senza alcun tentativo di proteggerlo E viene nascosto quando ho già un REAL / home. Perché i dati non persistono lì? Questo è tanto più pericoloso perché ora siamo incoraggiati a provare / usare / scambiare le distribuzioni (WLinux). Sembra davvero che qualcuno non abbia pensato a tutto questo.
Rainabba,

Nel mio caso (1809) la cartella si chiama CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
jao

2
Nota importante: non dovresti ancora cercare nei file Linux usando gli strumenti di Windows. Vedi: blogs.msdn.microsoft.com/commandline/2016/11/17/… (vedi anche il post sul blog stesso)
coltoneakins,

fantastico. un'altra ragione per cui git per windows / mingw funziona ancora meglio ... molto più pensiero messo in carichi di lavoro quotidiani reali. c'è un modo per rimappare correttamente?
enorl76,

1
@rainabba A prima vista sono d'accordo, ma dopo qualche pensiero, sto ancora scegliendo di utilizzare Windows piuttosto che Ubuntu. In quanto tale, sto trattando WSL come un modo per accedere agli strumenti di Linux, ma sto ancora trattando il mio file system di Windows come il cittadino di prima classe. Quindi /mnt/c/è dove immagazzino tutto in WSL. Mi piacerebbe se WSL fosse invertito a LWS; il che significa che sarebbe fantastico se eseguessimo tutti Ubuntu con sottosistemi Linux per Windows per eseguire una copia completa di Windows 10 integrata in Ubuntu. Lo so, sarebbe molto più difficile ma si può sognare.
Chev,

29
  1. /mnt/cè esattamente lo stesso di C:\. È solo la sintassi per arrivarci da WSL.
  2. Guarda dentro C:\Users\<username>\AppData\Local\Lxss\rootfs.

8
Attenzione: blogs.msdn.microsoft.com/commandline/2016/11/17/… questo è il posto sì ma non cambiare nulla.
chx,

6
A partire dal 2018, questa risposta non è più valida. Vedi la risposta di @ MichaelBond.
dr01,

11
Ora è andato a C:\Users\[USERNAME]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_[CODE]\LocalState\rootfs\ Potresti sapere quanto male se modifichi /manualmente
mementototem

per un facile accesso tramite copia-pasta, `% LOCALAPPDATA% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_ [CODE] \ LocalState \ rootfs`
ramoscello

Si noti che la cartella lxss sarà nascosta in Esplora file a meno che non si deselezioni "Opzioni cartella> Visualizza: Impostazioni avanzate: Nascondi file protetti del sistema operativo (consigliato)". Ma anche se è nascosto, puoi comunque aprire la cartella in Esplora file se la inserisci nel percorso della cartella.
Daryn

18

Informazioni sul filesystem montato /mnt/c

  1. Che cosa è esattamente / mnt / c / Users / rispetto a C: \ Users \? Sembra che siano una cosa sola --- quindi cos'è / mnt / c /?

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

  • In genere, tutti i dischi (diversi da quelli utilizzati per l'avvio del sistema) sono montati in una cartella denominata /mnto/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 dischi di rete e altri tipi di media.

  • In WSL, per impostazione predefinita, il C:disco in Windows è montato sotto/mnt/c
  • Se si dispone di un altro disco, ad esempio un D:disco in Windows, verrà montato sotto/mnt/d

I file che puoi vedere /mnt/csono gli stessi che hai C:. Se modifichi alcuni file, otterrai le modifiche anche nelle finestre.

È possibile utilizzare il mountcomando per accedere ad altri tipi di media (ad esempio unità rimovibili o condivisioni di rete).


Sulla posizione di /home/<username>

  1. Come posso visualizzare i file in / home / usando Esplora file di Windows? Non che avrei mai voluto --- Sto solo cercando di capire come Windows sta organizzando questo sottosistema per Linux.

In WSL, tutto il filesystem linux si trova in una cartella Windows. Il percorso della cartella dipende dalla versione di Windows e dalla distribuzione WSL in uso.

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

È possibile selezionare molte opzioni per conoscere la posizione della cartella WSL . Ad 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, /home/<username>è sotto <installation folder>\rootfs\home\username.

  • Ad esempio, se la cartella di installazione è c:\wsl\ubuntu
  • la /home/<username>si trova inc:\wsl\ubuntu\rootfs\home\username

NOTA: Sia Linux che Windows memorizzano le autorizzazioni dei file in diversi modi. Oggigiorno, WSL DrvFS memorizza le autorizzazioni Linux come stream (metadati) allegati ai file che è possibile visualizzare in Windows. Microsoft non consiglia di modificare i file Linux utilizzando i programmi Windows. È possibile che alcune applicazioni di Windows danneggino le autorizzazioni di Linux senza accorgersene.


5

Suppongo che potrebbe dipendere da quale build di Windows sei, ma per me nel 2018 su Windows 10 Pro 64-bit, versione 1709 (build del sistema operativo 16299.522) e anche versione 1803 (build del sistema operativo 17134.165) [un aggiornamento di Windows si è verificato ironicamente mentre stava scrivendo questo] la posizione è ancora:

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

Il trucco è che quando ci sei C:\Users\<username>\AppData\Localnon vedrai una lxsscartella (a meno che tu non abbia deselezionato "Nascondi i file del sistema operativo protetto (Consigliato)" nelle opzioni della cartella).

Tuttavia, aggiungi semplicemente \lxssnella barra degli indirizzi di Windows Explorer e ti porterà alla cartella.

(Nota ho non hanno una %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsco qualcosa di simile che è stato menzionato in Michael Bonds risposta)

Aggiornare

Si scopre che c'è WSL legacy che è quello che avevo installato. Ora WSL è fornito tramite un'app di Microsoft Store. Esistono versioni per Ubuntu 18.04 LTS e ora anche alcune altre versioni di Linux (ad es. Debian). Se vuoi essere aggiornato, potresti voler disinstallare WSL legacy e installare la versione dello store di Microsoft .

La posizione della cartella principale dipenderà da quale di questi tipi di WSL è stato installato.


4
  1. Usando la console bash WSL, nella tua home directory, crea un file con un nome specifico arbitrario come "test_here.txt".
  2. Quindi usando Esplora risorse, usando la casella di ricerca, cerca il file test_here.txt.
  3. Sul file trovato> tasto destro> Apri posizione file.

Ci ho provato Non funziona Non vedo il file nella ricerca. Tuttavia, se lascio cadere il file in / mnt / c / Users / <nomeutente>, ovviamente funziona.
Eamonn Kenny l'

Temo di aver provato il WSL ma non lo uso più. Non l'ho trovato molto utile. (Uso cygwin quotidianamente, anziché WSL, e lo trovo molto utile.) Quindi non posso più verificarlo, scusate;)
Ellis

La ricerca di rootfs funziona. puoi quindi navigare nel file system unbuntu da lì.
Tigr

2

Quattro passaggi per Windows 10 Pro per aggiungere Debian / Ubuntu / OpenSUSE $ HOME al menu di avvio di Windows:

  1. Dal menu Start avvia File Explorer
  2. Nella barra degli indirizzi (non nella barra di ricerca) digitare% LOCALAPPDATA%.
  3. Nella barra di ricerca cerca il nome della tua directory $ HOME, nel mio caso era ekenny. Ci saranno circa 3 versioni di questo, ma vuoi quella con un percorso davvero lungo.
  4. Fare clic con il tasto destro sulla home directory e fare clic su "Aggiungi per iniziare".

Ora hai la tua home directory bloccata sul tuo menu di avvio. Ho provato a creare una scorciatoia ma non è comprensibile da nessuna parte.


0

Avevo solo bisogno di trovare /etc/environmentUbuntu 16.04 cercando nell'archivio 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:\per la nomenclatura di Windows.
  • Ho cambiato anche tutte le occorrenze di /a \per lo stesso motivo.
  • Devi sostituire USER_NAMEcon il tuo nome utente di Windows.
  • Ho dovuto usare sudo -H Nautilusper ottenere le autorizzazioni per visualizzare i file utente memorizzati in WSL.
  • Non aggiornare MAI i tuoi file Linux in WSL usando un'applicazione Windows. Danneggerà i tuoi 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

0

Con l'attuale Windows 10 Insider (Fast ring: Windows 10 build 19025.1) puoi montare la tua distribuzione 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


Sei sicuro che questo sia limitato a WSL2? Dal 1903 ho pensato che potessi esplorare il contenuto della struttura dei file WSL da Windows. La creazione di un percorso di rete della mappa sarebbe stata possibile con tale modifica.
Ramhound,

Come ho scritto, non sono sicuro di WSL2. Ci sono due punti: l'introduzione di WSL2 (dalla build 18432) e la distribuzione supportata da WSL 2. Questa funzionalità appare insieme a WSL2 e spero che funzioni con qualsiasi distribuzione.
puledro

1909 (WSL2) è 18363.476, non 18432 (Insider Preview 20H1) a meno che non lo dica, questo è solo su build 20H1?
Ramhound,

-1

In Bash, per visualizzare la directory corrente in Esplora file di Windows basta inserire:

explorer .

Non tralasciare il "." Questo aprirà Windows Explorer nella cartella corrente e potrai vedere dove è tutto in relazione al resto del tuo sistema Windows.


Grazie per il contributo, ma funziona solo in Bash, non in WSL (sottosistema Windows per Linux) di cui si tratta questa domanda. Ti consiglierei di eliminare la tua risposta o potrebbe essere soggetta a downgrade.
rmcsharry,

Questo non funziona in WSL
Nicolai Anton Lynnerup il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.