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

Что такое домашний каталог подсистемы Windows для Linux?

Когда я запускаю bash на Windows Subsystem для Linux, он помещает меня в каталог

/mnt/c/Users/<username>

Когда я запускаю ls этот каталог, я вижу каталоги Desktop, Documents, и т.д., которые я вижу, находятся в C:\Users\<username> с помощью проводника Windows File Explorer. Поскольку именно с этого места запускалась программа bash, я ожидал, что это мой домашний каталог, но когда я набираю либо cd, либо cd ~, я попадаю в

/home/<username>

, который содержит мой файл .bashrc, .profile и т.д., который я ожидал найти в моем домашнем каталоге в коробке Linux. Более того, войдя в cd ../.. отсюда, я могу увидеть каталоги bin, etc и т.д., опять же, как и ожидалось на Linux box.

У меня есть два вопроса по поводу всего этого:

  1. Что именно такое /mnt/c/Users/<username> по сравнению с C:\Users\<username>? Похоже, что они одинаковы - так что же такое /mnt/c/?
  2. Как просмотреть файлы в /home/<username> с помощью проводника Windows File Explorer? Не то, чтобы я действительно хотел… Я просто пытаюсь понять, как Windows организует эту подсистему для Linux.

Ответы (11)

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

Для 2: Текущий путь теперь связан с тем, какой дистрибутив вы установили из Microsoft Store, а не с одним глобальным путем. Таким образом, для Ubuntu он теперь находится по адресу:

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

Я предполагаю, что другие дистрибутивы будут находиться в аналогичном месте под соответствующими папками:

%LOCALAPPDATA%\Packages\
33
33
33
2017-03-04 02:59:20 +0000
  1. /mnt/c точно такая же, как C:1./mnt/c` точно такая же, как . Это просто синтаксис, чтобы добраться до него из WSL.
  2. Посмотри в C:\Users\<username>\AppData\Local\Lxss\rootfs.
21
21
21
2018-08-09 12:58:03 +0000

О файловой системе, смонтированной на /mnt/c

  1. Что именно /mnt/c/Users/ сравнивается с C:\Users\? Похоже, они совпадают - так что же такое /mnt/c/?

В отличие от Windows, Linux (и другие системы, основанные на Unix) используют единую структуру папок, не зависящую от количества имеющихся у вас дисков. Если у вас несколько дисков, все эти диски в какой-то момент должны быть mounted в структуре папок.

  • Обычно все диски (отличные от тех, что используются для загрузки системы) mounted в папке с именем /mnt или /media

WSL имеет специальный тип файловой системы с именем DrvFS, которая дает вам доступ к дискам, используемым в Windows. Вы можете использовать DrvFS для монтирования не только файловой системы Windows, но и сетевых дисков и других типов носителей.

  • В WSL по умолчанию диск C: в windows монтируется под /mnt/c
  • Если у вас есть другой диск, например, диск D: в windows, он будет смонтирован под /mnt/d

Файлы, которые вы видите в /mnt/c, такие же, как и в C:. Если вы измените какой-нибудь файл, вы также получите изменения в окнах.

Вы можете использовать команду mount для доступа к другим типам носителей (например, съемным носителям или сетевым разделяемым ресурсам).


О местоположении /home/<username>

  1. Как просмотреть файлы в /home/ с помощью проводника Windows File Explorer? Не то, чтобы я бы действительно хотел… Я просто пытаюсь получить представление о том, как Windows организует эту подсистему для Linux вещь.

В WSL вся файловая система Linux расположена в папке Windows. Расположение папки зависит от версии Windows и используемого вами дистрибутива WSL.

  • Инициальные версии WSL хранят файловую систему linux в дистрибутивах %LOCALAPPDATA%\Lxss\rootfs
  • WSL, установленных из Магазина Windows , начиная со сборки Windows Build 16215 (середина 2017), используйте папку типа %LOCALAPPDATA%\Packages\...\LocalState\rootfs. Имя пакета зависит от дистрибутива (например, для Ubuntu оно отличается от имени Debian)
  • Дистрибутивы linux, установленные с помощью других утилит , таких как lxRunOffline или WSL-DistroLauncher , могут хранить файловую систему linux в любом месте.

Вы можете проверить множество опций, чтобы узнать расположение папки WSL . Например, я думаю, что проще всего использовать lxRunOffline , чтобы узнать папку установки.

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

После того, как вы знаете расположение папки установки, /home/<username> находится под <installation folder>\rootfs\home\username.

  • Например, если папка установки c:\wsl\ubuntu
  • /home/<username> находится в c:\wsl\ubuntu\rootfs\home\username

NOTE: В Linux и Windows разрешения на файлы хранятся по-разному. В настоящее время WSL DrvFS хранит разрешения для Linux в виде потоков (метаданных), прикрепленных к файлам, которые вы видите в Windows. Microsoft не рекомендует изменять файлы linux с помощью программ для Windows. Возможно, что некоторые приложения Windows повреждают linux разрешения , не обращая на это внимания.

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

В Bash для просмотра текущего каталога в проводнике Windows File Explorer просто введите:

explorer.exe .

Не забывайте “…”.

Это откроет проводник Windows в текущей папке, и вы сможете увидеть, где все находится по отношению к остальной части вашей системы Windows.

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

Полагаю, это может зависеть от того, на каких окнах вы собираетесь, но для меня в 2018 году на Windows 10 Pro 64-bit, Version 1709 (OS Build 16299.522), а также Version 1803 (OS Build 17134). 165) [по иронии судьбы произошло обновление windows, когда я печатал это] местоположение все еще следующее:

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

Хитрость в том, что когда вы находитесь в C:\Users\<username>\AppData\Local, вы не увидите папку lxss (если только вы случайно не сняли флажок “Скрыть защищенные файлы операционной системы (Рекомендуется)” в параметрах папки).

Однако, просто добавьте \lxss в адресную строку проводника Windows, и вы попадете в папку.

(Обратите внимание, что у меня был not %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc или что-то подобное, что упоминалось в ответе Michael Bonds)

Обновление

Оказывается, есть старый WSL, который я установил. Теперь WSL предоставляется через приложение хранилища Microsoft. Есть версии для Ubuntu 18.04 LTS, а также несколько других вкусов Linux (например, Debian). Если вы хотите быть в курсе последних новостей, возможно, вы захотите удалить legacy WSL и установить Microsoft store version .

Где ваша домашняя папка будет зависеть от того, какой из этих типов WSL вы установили.

4
4
4
2018-01-15 12:07:42 +0000
  1. Используя консоль WSL bash, в вашем домашнем каталоге создайте файл с произвольным специфическим именем, таким как “test_here.txt”.
  2. Затем с помощью проводника Windows Explorer, используя поисковую строку, найдите файл test_here.txt.
  3. На найденном файле > щелкните правой кнопкой мыши на > Открыть расположение файла.
3
3
3
2019-11-16 15:21:34 +0000

С текущей Windows 10 Insider (Быстрое кольцо: Windows 10 build 19025.1) можно монтировать дистрибутив в качестве сетевого диска. WSL доступен как wls$, путь - ваше имя дистрибутива (wsl -l -q).

Например, net use Z: \wsl$\Debian /PERSISTENT:YES

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

Четыре шага для windows 10 pro, чтобы прикрепить ваш Debian/Ubuntu/OpenSUSE $HOME к стартовому меню Windows:

  1. От стартового меню запустить Проводник файлов
  2. В адресной строке (не строке поиска) введите %LOCALAPPDATA%.
  3. В строке поиска ищите ваше имя каталога $HOME, в моем случае это ekenny. Будет около 3-х версий, но вы хотите версию с очень длинным путем.
  4. Щелкните правой кнопкой мыши свой домашний каталог и нажмите “Pin to Start”.

Теперь у вас есть ваш домашний каталог, прикрепленный к стартовому меню. Я попробовал создать ярлык, но он никуда не годится.

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

Если вы установили дистрибутив с Chocolatey , путь к домашнему каталогу будет:

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

Например, для Ubuntu 18.04 :

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

В моей установке (WSL Ubuntu под “средой разработки Windows 10”, загруженной с https://developer.microsoft.com/en-us/windows/downloads/virtual-machines ) папка AppData была скрыта по умолчанию. Так и должно было быть:

  • откройте windows explorer
  • перейдите к `C:\Users\UserВ моей установке (WSL Ubuntu под “средой разработки Windows 10”, загруженной с [ https://developer.microsoft.com/en-us/windows/downloads/virtual-machines ]0x3&) папка AppData была скрыта по умолчанию. Так и должно было быть:

  • откройте windows explorer

  • перейдите к

  • выберите view в meny

  • проверьте hidden items

  • тогда папка AppData появится под C:\Users\User

  • и я нашел мою /home/user под C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs\home\user (где *, вероятно, локальный код или версию, зависящую от кода какого-то типа)

Не знаю, почему она так спрятана.

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

Мне просто нужно было найти 0x6 и с помощью Ubuntu 16.04 глядя в Windows 10 NTFS хранения. Я нашел его здесь:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • я изменил /etc/environment на /mnt/c/ для номенклатуры Windows.
  • По той же причине я изменил все случаи `C:Мне просто нужно было найти 0x6 и с помощью Ubuntu 16.04 глядя в Windows 10 NTFS хранения. Я нашел его здесь:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • я изменил /etc/environment на /mnt/c/ для номенклатуры Windows.
  • По той же причине я изменил все случаи на /.
  • Вам нужно заменить `Мне просто нужно было найти 0x6 и с помощью Ubuntu 16.04 глядя в Windows 10 NTFS хранения. Я нашел его здесь:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • я изменил /etc/environment на /mnt/c/ для номенклатуры Windows.
  • По той же причине я изменил все случаи `C:Мне просто нужно было найти 0x6 и с помощью Ubuntu 16.04 глядя в Windows 10 NTFS хранения. Я нашел его здесь:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • я изменил /etc/environment на /mnt/c/ для номенклатуры Windows.
  • По той же причине я изменил все случаи на /.
  • Вам нужно заменить на ваше имя пользователя Windows.
  • Мне пришлось использовать USER_NAME для получения разрешений на просмотр пользовательских файлов, хранящихся в WSL.
  • NEVER обновляет ваши Linux файлы в WSL с помощью приложения Windows. Это повредит ваши данные Linux.

Со стороны Linux (Ubuntu 16.04) будет номенклатура:

$ 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