Qu'est-ce que le répertoire personnel du sous-système Windows pour Linux?

88

Lorsque je démarre bashsur Windows Subsystem for Linux, il me dépose dans le répertoire

/mnt/c/Users/<username>

Lorsque je lsce répertoire, je vois les répertoires Desktop, Documentsetc. que je peux voir sont en C:\Users\<username>utilisant l'Explorateur de fichiers Windows. Puisque c'est là que le bashprogramme a commencé, je m'attendais à ce que ce soit mon répertoire personnel, mais lorsque je tape l'un cdou l' autre, cd ~je suis amené à

/home/<username>

qui contient mon .bashrc, .profileetc. fichier que je m'attendrais à trouver dans mon répertoire personnel dans une boîte Linux. De plus, en entrant à cd ../..partir d'ici, je peux voir les répertoires bin, etcetc., comme prévu sur une boîte Linux.

J'ai deux questions concernant tout cela:

  1. À quoi est-il /mnt/c/Users/<username>comparé exactement C:\Users\<username>? Il semble qu'ils soient un dans le même --- alors qu'est-ce que c'est /mnt/c/?
  2. Comment puis-je afficher les fichiers en /home/<username>utilisant l'explorateur de fichiers Windows? Non pas que j'aurais vraiment envie de le faire --- J'essaie juste de comprendre comment Windows organise ce sous-système pour Linux.
bcf
la source

Réponses:

103

Pour 2: le chemin d'accès actuel est désormais lié à la distribution que vous avez installée à partir du Microsoft Store plutôt qu'à un chemin d'accès global. Donc, pour Ubuntu, il est maintenant situé à:

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

Je suppose que les autres distributions seront dans un emplacement similaire sous leurs dossiers respectifs sous:

%LOCALAPPDATA%\Packages\
Michael Bond
la source
11
Quelqu'un d'autre trouve cette pratique dérangeante? Mon dossier HOME n'est-il pas censé être le seul endroit sûr pour MES données dans un dépôt? Avec cette approche, un dépôt cassé et une réinstallation des flexibles MES DONNÉES sans aucune tentative de les protéger ET ils sont cachés lorsque j'ai déjà un VRAI / domicile. Pourquoi n'y a-t-il pas de données persistantes? C'est d'autant plus dangereux que nous sommes maintenant encouragés à essayer / utiliser / échanger des distributions (WLinux). On a vraiment l'impression que quelqu'un n'a pas réfléchi à tout cela.
rainabba
Dans mon cas (1809), le dossier s'appelle CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
jao
2
Remarque importante: vous ne devez toujours pas fouiller les fichiers Linux à l'aide des outils Windows. Voir: blogs.msdn.microsoft.com/commandline/2016/11/17/… (voir également l'article de blog lui-même)
coltoneakins
fantastique. une autre raison pour laquelle git pour windows / mingw fonctionne toujours mieux ... beaucoup plus de réflexion sur les charges de travail quotidiennes réelles. existe-t-il un moyen de le remapper correctement?
enorl76
1
@rainabba À première vue, je suis d'accord, mais après réflexion, je choisis toujours d'utiliser Windows plutôt que Ubuntu à part entière. En tant que tel, je traite WSL comme un moyen d'accéder aux outils Linux, mais je considère toujours mon système de fichiers Windows comme un citoyen de première classe. C'est /mnt/c/là que je stocke tout dans WSL. J'adorerais que WSL soit inversé en LWS; ce qui signifie que ce serait génial si nous exécutions tous Ubuntu avec des sous-systèmes Linux pour Windows pour exécuter une copie complète de Windows 10 intégrée à Ubuntu. Je sais, ce serait beaucoup plus difficile mais on peut rêver.
Chev
29
  1. /mnt/cest exactement le même que C:\. C'est juste la syntaxe pour y accéder depuis WSL.
  2. Regarde C:\Users\<username>\AppData\Local\Lxss\rootfs.
Joseph Sible-Reinstate Monica
la source
8
Attention: blogs.msdn.microsoft.com/commandline/2016/11/17/… c'est l'endroit oui mais ne change rien.
chx
6
Depuis 2018, cette réponse n'est plus valable. Voir la réponse de @ MichaelBond.
dr01
12
Maintenant, c'est parti pour C:\Users\[USERNAME]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_[CODE]\LocalState\rootfs\ Vous pourriez savoir à quel point si vous modifiez /manuellement
mementototem
pour un accès facile via copy-pasta, `% LOCALAPPDATA% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_ [CODE] \ LocalState \ rootfs`
twig
Notez que le dossier lxss sera masqué dans l'Explorateur de fichiers, sauf si vous décochez "Options des dossiers> Affichage: Paramètres avancés: Masquer les fichiers protégés du système d'exploitation (recommandé)". Mais même s'il est masqué, vous pouvez toujours ouvrir le dossier dans l'Explorateur de fichiers si vous le saisissez dans le chemin du dossier.
Daryn
18

À propos du système de fichiers monté sur /mnt/c

  1. Qu'est-ce que / mnt / c / Users / exactement avec C: \ Users \? Il semble qu'ils soient un dans le même --- alors qu'est-ce que / mnt / c /?

Contrairement à Windows, Linux (et les autres systèmes basés sur Unix) utilisent une structure de dossiers unique indépendante du nombre de disques dont vous disposez. Si vous avez plusieurs disques, tous ces disques doivent être montés dans la structure de dossiers à un moment donné.

  • En règle générale, tous les disques (différents de ceux utilisés pour démarrer le système) sont montés dans un dossier nommé /mntou/media

WSL possède un type spécial de système de fichiers nommé DrvFS qui vous donne accès aux disques utilisés dans les fenêtres. Vous pouvez utiliser DrvFS pour monter, non seulement votre système de fichiers Windows, mais également des disques réseau et d'autres types de médias.

  • Dans WSL, par défaut, le C:disque dans Windows est monté sous/mnt/c
  • Si vous avez un autre disque, par exemple un D:disque sous Windows, il sera monté sous/mnt/d

Les fichiers que vous pouvez voir /mnt/csont les mêmes que vous C:. Si vous modifiez un fichier, vous obtiendrez également les modifications dans les fenêtres.

Vous pouvez utiliser la mountcommande pour accéder à d'autres types de supports (par exemple des lecteurs amovibles ou des partages réseau).


À propos de l'emplacement de /home/<username>

  1. Comment puis-je afficher les fichiers dans / home / à l'aide de l'Explorateur de fichiers Windows? Non pas que j'aurais vraiment envie de le faire --- J'essaie juste de comprendre comment Windows organise ce sous-système pour Linux.

Dans WSL, tout le système de fichiers Linux est situé sous un dossier Windows. L'emplacement du dossier dépend de la version de Windows et de la distribution WSL que vous utilisez.

  • Les versions initiales de WSL stockent le système de fichiers linux dans%LOCALAPPDATA%\Lxss\rootfs
  • Les distributions WSL installées à partir du Windows Store , à partir de Windows Build 16215 (mi-2017), utilisent un dossier comme %LOCALAPPDATA%\Packages\...\LocalState\rootfs. Le nom du paquet varie en fonction de la distribution (par exemple, il est différent pour Ubuntu que pour Debian)
  • Les distributions Linux installées à l'aide d'autres outils , tels que lxRunOffline ou WSL-DistroLauncher, peuvent stocker le système de fichiers linux dans n'importe quel emplacement.

Vous pouvez vérifier de nombreuses options pour connaître l'emplacement du dossier WSL . Par exemple, je pense que l'option la plus simple est d'utiliser lxRunOffline pour connaître le dossier d'installation.

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

Une fois que vous connaissez l'emplacement du dossier d'installation, le /home/<username>est sous <installation folder>\rootfs\home\username.

  • Par exemple, si votre dossier d'installation est c:\wsl\ubuntu
  • l' /home/<username>est dansc:\wsl\ubuntu\rootfs\home\username

REMARQUE: Linux et Windows stockent les autorisations de fichiers de différentes manières. De nos jours, le WSL DrvFS stocke les autorisations Linux sous forme de flux (métadonnées) attachés aux fichiers que vous pouvez voir dans Windows. Microsoft ne recommande pas de modifier les fichiers linux à l'aide de programmes Windows. Il est possible que certaines applications Windows endommagent les autorisations Linux sans le remarquer.

Jaime
la source
5

Je suppose que cela peut dépendre de la version de Windows sur laquelle vous vous trouvez, mais pour moi en 2018 sur Windows 10 Pro 64 bits, version 1709 (OS Build 16299.522) et également la version 1803 (OS Build 17134.165) [une mise à jour Windows s'est produite ironiquement lorsque je tapais ceci] l'emplacement est toujours:

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

L'astuce est que lorsque vous y êtes, C:\Users\<username>\AppData\Localvous ne verrez pas de lxssdossier (sauf si vous avez décoché "Masquer les fichiers protégés du système d'exploitation (recommandé)" dans vos options de dossier).

Cependant, ajoutez simplement \lxssdans la barre d'adresse de l'explorateur Windows et il vous amènera au dossier.

(Notez que je n'avais pas un %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgscou quelque chose de similaire qui a été mentionné dans la réponse de Michael Bonds)

Mise à jour

Il s'avère qu'il existe un WSL hérité qui est ce que j'avais installé. Maintenant, WSL est fourni via une application Microsoft Store. Il existe des versions pour Ubuntu 18.04 LTS et aussi maintenant quelques autres versions de Linux (par exemple Debian). Si vous souhaitez être à jour, vous pouvez désinstaller l'ancien WSL et installer la version de Microsoft Store .

L'emplacement de votre dossier de départ dépendra du type de WSL que vous aurez installé.

Utilisateur
la source
4
  1. À l'aide de la console bash WSL, dans votre répertoire personnel, créez un fichier avec un nom spécifique arbitraire tel que "test_here.txt".
  2. Ensuite, à l'aide de l'Explorateur Windows, à l'aide de la zone de recherche, recherchez le fichier test_here.txt.
  3. Sur le fichier trouvé> faites un clic droit> Ouvrir l'emplacement du fichier.
Ellis
la source
J'ai essayé ça. Ça ne marche pas. Je ne vois pas le fichier en recherche. Cependant, si je dépose le fichier dans / mnt / c / Users / <username>, cela fonctionne évidemment.
Eamonn Kenny
J'ai peur d'avoir essayé le WSL mais je ne l'utilise plus. Je ne l'ai pas trouvé très utile. (J'utilise cygwin quotidiennement, au lieu de WSL, et je le trouve très utile.) Je ne peux donc plus le vérifier, désolé;)
Ellis
La recherche de rootfs fonctionne. vous pouvez ensuite naviguer dans le système de fichiers unbuntu à partir de là.
tigr
2

Quatre étapes pour que Windows 10 Pro épingle votre Debian / Ubuntu / OpenSUSE $ HOME dans le menu de démarrage de Windows:

  1. À partir du menu Démarrer, lancez l'Explorateur de fichiers
  2. Dans la barre d'adresse (pas la barre de recherche), tapez% LOCALAPPDATA%.
  3. Dans la barre de recherche, recherchez le nom de votre répertoire $ HOME, dans mon cas, c'était ekenny. Il y aura environ 3 versions de cela, mais vous voulez celle avec un chemin vraiment long.
  4. Faites un clic droit sur votre répertoire personnel et cliquez sur "Épingler pour commencer".

Vous avez maintenant votre répertoire personnel épinglé à votre menu de démarrage. J'ai essayé de créer un raccourci mais cela ne va nulle part intelligible.

Eamonn Kenny
la source
0

J'avais juste besoin de trouver en /etc/environmentutilisant Ubuntu 16.04 en regardant dans le stockage Windows 10 NTFS. Je l'ai trouvé ici:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • J'ai changé /mnt/c/à C:\pour la nomenclature de Windows.
  • J'ai aussi changé toutes les occurrences de /la \pour même raison.
  • Vous devez remplacer USER_NAMEpar votre nom d'utilisateur Windows.
  • J'ai dû utiliser sudo -H Nautiluspour obtenir des autorisations pour afficher les fichiers utilisateur stockés dans WSL.
  • NE mettez JAMAIS à jour vos fichiers Linux dans WSL à l'aide d'une application Windows. Cela corrompra vos données Linux .

Du côté Linux (Ubuntu 16.04), la nomenclature serait:

$ 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
la source
0

Avec Windows 10 Insider actuel (Fast ring: Windows 10 build 19025.1), vous pouvez monter votre distribution en tant que lecteur réseau. WSL est accessible en tant que wls$, le chemin est votre nom de distribution ( wsl -l -q).

Par exemple net use Z: \\wsl$\Debian /PERSISTENT:YES

poulain
la source
Êtes-vous sûr que cela est limité à WSL2? Je pensais qu'à partir de 1903, vous pouviez explorer le contenu de la structure de fichiers WSL à partir de Windows. La création d'un emplacement de réseau de carte aurait été possible avec ce changement.
Ramhound
Comme je l'ai écrit, je ne suis pas sûr de WSL2. Il y a deux points: l'introduction de WSL2 (à partir de la build 18432) et la distribution soutenue par WSL 2. Cette fonctionnalité apparaît avec WSL2 et j'espère qu'elle fonctionne avec n'importe quelle distribution.
poulain
1909 (WSL2) est 18363.476, pas 18432 (Insider Preview 20H1) sauf si vous dites que ce n'est que sur les versions 20H1?
Ramhound
-1

Dans Bash, pour afficher le répertoire actuel dans l'Explorateur de fichiers Windows, entrez simplement:

explorer .

Ne laissez pas de côté le "." Cela ouvrira l'explorateur Windows dans le dossier actuel et vous pourrez voir où tout se trouve par rapport au reste de votre système Windows.

Gary Barrett
la source
Merci pour la contribution mais cela ne fonctionne que dans Bash, pas dans WSL (WIndows Subsystem for Linux) qui est le sujet de cette question. Je vous conseillerais de supprimer votre réponse, sinon elle risque d'être rejetée.
rmcsharry
Cela ne fonctionne pas en WSL
Nicolai Anton Lynnerup