362 votes

Quel est le répertoire d'accueil sur le sous-système Windows pour Linux ?

Quand je commence bash sur Windows Subsystem for Linux, il me dépose dans le répertoire

/mnt/c/Users/<username>

Quand je ls ce répertoire, je vois les répertoires Desktop , Documents etc. que je peux voir sont dans C:\Users\<username> en utilisant l'explorateur de fichiers de Windows. Puisque c'est là que se trouve le bash lancé, je m'attendais à ce que ce soit mon répertoire personnel, mais lorsque je tape soit cd o cd ~ Je suis amené à

/home/<username>

qui contient mon .bashrc , .profile etc. que je m'attends à trouver dans mon répertoire personnel sur une machine Linux. De plus, en entrant cd ../.. d'ici je peux voir les répertoires bin , etc et ainsi de suite, comme prévu sur une machine Linux.

J'ai deux questions concernant tout cela :

  1. Qu'est-ce que c'est exactement /mnt/c/Users/<username> par rapport à C:\Users\<username> ? Il semble qu'ils ne fassent qu'un alors qu'est-ce que c'est ? /mnt/c/ ?
  2. Comment puis-je visualiser les fichiers dans /home/<username> en utilisant l'explorateur de fichiers de Windows ? Non pas que je veuille vraiment le faire j'essaie juste de comprendre comment Windows organise ce sous-système pour Linux.

3 votes

378voto

Michael Bond Points 3867

Dans les dernières versions [2020], le système de fichiers est accessible à partir de :

# \\wsl$\<Distribution>:

\\wsl$\Ubuntu

Auparavant, à partir de 2018, Le chemin actuel est lié à la distribution que vous avez installée à partir du Microsoft Store plutôt qu'à un chemin global ; pour Ubuntu, il était situé à :

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

Les autres distributions devraient se trouver (à confirmer) à un emplacement similaire dans leurs dossiers respectifs :

%LOCALAPPDATA%\Packages\

49 votes

Quelqu'un d'autre trouve cette pratique inquiétante ? Mon dossier HOME n'est-il pas censé être le SEUL endroit sûr pour MES données dans un repo ? Avec cette approche, un repo défectueux et une réinstallation entraînent la perte de MES DONNÉES sans qu'aucune tentative ne soit faite pour les protéger, et elles sont cachées alors que j'ai déjà un VRAI /home. Pourquoi les données n'y sont-elles pas conservées ? C'est d'autant plus dangereux que l'on nous encourage maintenant à essayer/utiliser/échanger les distros (WLinux). On a vraiment l'impression que quelqu'un n'a pas réfléchi à tout cela.

0 votes

Dans mon cas (1809), le dossier est appelé CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc

9 votes

Remarque importante : vous ne devez toujours pas fouiller dans les fichiers Linux à l'aide d'outils Windows. Voir : blogs.msdn.microsoft.com/commandline/2016/11/17/ (voir également l'article de blog lui-même)

248voto

Gary Barrett Points 3483

Dans Bash, pour afficher le répertoire actuel dans l'explorateur de fichiers de Windows, il suffit d'entrer :

explorer.exe .

N'omettez pas le ".".

L'explorateur Windows s'ouvre alors sur le dossier en cours et vous pouvez voir où tout se trouve par rapport au reste de votre système Windows.

26 votes

En fait, explorer.exe . fonctionne en WSL. C'est la seule réponse qui a fonctionné pour moi, car tous les chemins fournis par les autres réponses ne sont pas présents dans mon système. Je n'ai pas pu modifier la réponse moi-même car les modifications doivent comporter au moins 6 caractères .

7 votes

Intéressant. Dans mon cas, peu importe où j'exécute explorer.exe . il ouvre toujours l'explorateur de fichiers dans le répertoire d'origine de mon utilisateur Windows ( %USERPROFILE% ). Windows 10 Enterprise 1809 (build 17763.1039), Ubuntu 18.04. Peu importe si je suis dans la maison de mon Ubuntu, /etc ou autre.

1 votes

Je pense qu'il y a un malentendu ici - la réponse semble concerner bash lui-même, non ? Mais pas nécessairement à bash dans WSL1. Je viens d'essayer sur mon installation ubuntu dans WSL1 et "explorer.exe" est introuvable, donc je pense que la réponse ne peut être que partiellement correcte, contrairement à ce que Marco Lackovic a déclaré. Peut-être qu'explorer.exe fonctionne, mais à 100% pas par défaut, car je viens de l'essayer avec une instance de bash qui démarre ubuntu.

61voto

  1. /mnt/c est exactement la même chose que C:\ . C'est juste la syntaxe pour y accéder à partir de WSL.
  2. Regardez C:\Users\<username>\AppData\Local\Lxss\rootfs .

11 votes

Attention : blogs.msdn.microsoft.com/commandline/2016/11/17/ c'est l'endroit oui mais ne changez rien.

15 votes

Depuis 2018, cette réponse n'est plus valable. Voir la réponse de @MichaelBond.

39 votes

Maintenant, c'est passé à C:\Users\[USERNAME]\AppData\Local\Packages\CanonicalGroupLim‌​ited.UbuntuonWindows‌​_[CODE]\LocalState\r‌​ootfs\ Vous pourriez savoir à quel point si vous éditez / manuellement

50voto

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

  1. Que représente exactement /mnt/c/Users/ par rapport à C:\Users <nom d'utilisateur> ? Il semble qu'ils soient une seule et même chose alors qu'est-ce que /mnt/c/ ?

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

  • En général, tous les disques (autres que celui utilisé pour démarrer le système) sont monté dans un dossier nommé /mnt o /media

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

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

Les fichiers que vous pouvez voir dans /mnt/c sont les mêmes que celles que vous avez dans C: . Si vous modifiez un fichier, vous obtiendrez les changements dans Windows également.

Vous pouvez utiliser le mount pour accéder à d'autres types de médias (par exemple, des lecteurs amovibles ou des partages réseau).


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

  1. Comment puis-je visualiser les fichiers dans /home/ en utilisant l'explorateur de fichiers de Windows ? Ce n'est pas que je veuille vraiment 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é dans un dossier Windows. L'emplacement de ce dossier dépend de la version de Windows et de la distribution WSL que vous utilisez.

  • Premières versions du WSL stocker le système de fichiers linux dans %LOCALAPPDATA%\Lxss\rootfs
  • Distributions WSL installées à partir du Windows Store À partir de la version 16215 de Windows (mi-2017), utilisez un dossier comme le suivant %LOCALAPPDATA%\Packages\{package}\LocalState\rootfs . Le nom du paquet varie en fonction de la distribution (par exemple, il est différent pour Ubuntu et pour Debian). Pour Ubuntu sous Windows, c'est CanonicalGroupLimited.UbuntuonWindows_{code} par exemple.
  • Distributions Linux installées à l'aide d'autres outils tels que lxRunOffline o WSL-DistroLauncher peut stocker le système de fichiers linux à n'importe quel endroit.

Vous pouvez vérifier plusieurs options pour connaître l'emplacement du dossier WSL . Par exemple, je pense que l'option la plus facile 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, la fonction /home/<username> est sous <installation folder>\rootfs\home\username .

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

NOTE : Linux et Windows stockent tous deux les autorisations de fichiers de différentes manières. Aujourd'hui, le WSL DrvFS stocke les permissions 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 endommager les permissions de linux sans le remarquer.

27voto

Carlos Points 381

Avec la version actuelle de Windows 10 Insider (Fast ring : Windows 10 build 19025.1), vous pouvez monter votre distro comme un lecteur réseau.

Le WSL est accessible en tant que wsl$ le chemin est le nom de votre distribution ( wsl -l -q ).

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

0 votes

Etes-vous sûr que cela se limite à WSL2 ? Je pensais qu'à partir de 1903, on pouvait explorer le contenu de la structure du fichier WSL depuis Windows. Créer une carte d'emplacement réseau aurait été possible avec ce changement.

0 votes

Comme je l'ai écrit, je ne suis pas sûr de la WSL2. Il y a deux points : l'introduction de la WSL2 (à partir de la build 18432) et la distribution soutenue par la WSL 2. Cette fonctionnalité apparaît avec WSL2 et j'espère qu'elle fonctionne avec n'importe quelle distribution.

0 votes

1909 (WSL2) est 18363.476, pas 18432(Insider Preview 20H1) à moins que vous ne disiez que cela ne concerne que les builds 20H1 ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X