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


87

Коли я запускаю bashпідсистему Windows для Linux, це вводить мене в каталог

/mnt/c/Users/<username>

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

/home/<username>

який містить мій .bashrcі .profileт.д. файл, який я б очікував знайти у своєму домашньому каталозі у вікні Linux. Крім того, введення cd ../..звідси я можу бачити , каталоги bin, etcі так далі, знову ж, як і очікувалося на коробці Linux.

У мене є два питання щодо всього цього:

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

Відповіді:


103

Для 2: поточний шлях тепер пов'язаний з тим, який дистрибутив ви встановили з магазину Microsoft, а не один глобальний шлях. Отже, для Ubuntu він зараз знаходиться за адресою:

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

Я припускаю, що інші дистрибутиви будуть у подібному місці під відповідними папками під:

%LOCALAPPDATA%\Packages\

11
Хтось ще вважає цю практику тривожною? Хіба моя папка HOME не повинна бути єдиним безпечним місцем для моїх даних всередині репо? При такому підході зламане репо і перевстановлення шлангів МОЇ ДАНІ без жодної спроби захистити його І це приховано, коли я вже маю РЕАЛЬНУ / домашню. Чому дані там не зберігаються? Це тим більше небезпечно, оскільки зараз нам рекомендують спробувати / використовувати / поміняти дистрибутив (WLinux). Дійсно відчуваєш, як хтось не продумав це все.
rainabba

У моєму випадку (1809) папка називається CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
jao

2
Важлива примітка. Ви все одно не повинні обробляти файли Linux за допомогою інструментів Windows. Дивіться: blogs.msdn.microsoft.com/commandline/2016/11/17/… (також дивіться саму публікацію в блозі)
coltoneakins

фантастичний. Ще одна причина, що git для windows / mingw все ще працює краще ... набагато більше думок вкладають у реальні щоденні навантаження. чи є спосіб їх перезаписати належним чином?
enorl76

1
@rainabba Спочатку рум'яна погоджуюсь, але, подумавши, я все-таки вибираю використовувати Windows, а не повноцінний Ubuntu. Як такий, я розглядаю WSL як спосіб доступу до інструментів Linux, але досі мою файлову систему Windows вважаю громадянином першого класу. Тож /mnt/c/де я зберігаю все у WSL. Мені б подобалося, якби WSL було повернено до LWS; це означає, що було б приголомшливо, якби ми працювали на Ubuntu з підсистемами Linux для Windows, щоб запустити повну копію Windows 10, інтегровану в Ubuntu. Я знаю, це було б набагато важче, але можна мріяти.
Шев

29
  1. /mnt/cточно так само, як C:\. Це просто синтаксис добору до нього з WSL.
  2. Загляньте C:\Users\<username>\AppData\Local\Lxss\rootfs.

8
Попередження: blogs.msdn.microsoft.com/commandline/2016/11/17/… це місце так, але нічого не змінюйте.
chx

6
Станом на 2018 рік ця відповідь більше не діє. Дивіться відповідь @ MichaelBond.
dr01

11
Тепер це вже пішло. C:\Users\[USERNAME]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_[CODE]\LocalState\rootfs\ Ви можете знати, як погано, якщо редагувати /вручну
спогад

для легкого доступу через копію-пасту, `% LOCALAPPDATA% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_ [CODE] \ LocalState \ rootfs`
гілочка

Зверніть увагу, що папка lxss буде прихована у File Explorer, якщо ви не знімете прапорець "Параметри папки> Перегляд: Розширені налаштування: Сховати захищені файли операційної системи (рекомендується)". Але, хоч вона і прихована, ви все одно можете відкрити папку в Провіднику файлів, якщо ввести її в шлях до папки.
Дарин

18

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

  1. Що саме / mnt / c / Користувачі / порівняно з C: \ Користувачами \? Здається, вони одне і те ж --- так що таке / mnt / c /?

На відміну від Windows, Linux (та інші системи на базі Unix) використовують єдину структуру папок, незалежно від кількості ваших дисків. Якщо у вас є кілька дисків, усі ці диски повинні я в якийсь момент вмонтувати в структуру папок.

  • Зазвичай всі диски (відмінні від використовуваних для завантаження системи) монтуються в папку з назвою /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? Не те, що я насправді хотів би --- я просто намагаюся зрозуміти, як 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

ПРИМІТКА. І Linux, і Windows зберігають дозволи файлів різними способами. На сьогодні WSL DrvFS зберігає дозволи Linux як Streams (метадані), додані до файлів, які ви можете бачити в Windows. Microsoft не рекомендує змінювати файли Linux за допомогою програм Windows. Можливо, що деякі програми Windows пошкоджують дозволи Linux, не помічаючи цього.


5

Я вважаю, що це може залежати від того, на якій версії ви працюєте, але для мене в 2018 році для Windows 10 Pro 64-розрядна версія, версія 1709 (збірка ОС 16299.522), а також версія 1803 (збірка ОС 17134.165) [оновлення Windows іронічно відбулося, коли я вводив це] місцеположення все ще:

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

Хитрість полягає в тому, що коли ви знаходитесь, C:\Users\<username>\AppData\Localви не побачите lxssпапку (якщо у вас не буде встановлено прапорець "Сховати захищені файли операційної системи (рекомендується)" у параметрах вашої папки).

Однак просто додайте \lxssдо адресного рядка провідника Windows, і він перенесе вас у папку.

(Зауважте, у мене не було %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgscнічого подібного, що згадувалося у відповіді Майкла Бонда)

Оновлення

Виявляється, є спадщина WSL, яку я встановив. Тепер WSL надається через додаток магазину Microsoft. Існують версії для Ubuntu 18.04 LTS, а також тепер декілька інших ароматів Linux (наприклад, Debian). Якщо ви хочете бути оновленими, ви можете видалити застарілий WSL та встановити версію магазину Microsoft .

Те, де знаходиться ваша домашня папка, залежатиме від того, який із цих типів WSL ви встановили.


4
  1. За допомогою консолі bash WSL у домашньому каталозі створіть файл із довільним конкретним іменем, наприклад "test_here.txt".
  2. Потім за допомогою Провідника Windows за допомогою поля пошуку знайдіть файл test_here.txt.
  3. На знайденому файлі> клацніть правою кнопкою миші> Відкрити розташування файлу.

Я спробував це. Це не працює. Я не бачу файл у пошуку. Однак якщо я скидаю файл у / mnt / c / Users / <username>, він, очевидно, працює.
Еймон Кенні

Боюся, що я спробував WSL, але більше не використовую. Я не вважав це дуже корисним. (Я використовую cygwin щодня замість WSL, і мені здається, це дуже корисно. Тому я більше не можу це перевірити, вибачте;)
Ellis

Пошук кореневих файлів працює. Ви можете перейти звідти до файлової системи unbuntu.
тигр

2

Чотири кроки для Windows 10 pro, щоб закріпити ваш Debian / Ubuntu / OpenSUSE $ HOME у меню запуску Windows:

  1. З меню запуску запустіть File Explorer
  2. В адресному рядку (не рядок пошуку) введіть% LOCALAPPDATA%.
  3. У панелі пошуку знайдіть своє ім'я каталогу HOME, у моєму випадку це було ekenny. Буде близько 3 версій цього, але ви хочете, щоб той, який дійсно довгий шлях.
  4. Клацніть правою кнопкою миші домашній каталог та натисніть "Прикріпити до початку".

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


0

Мені просто потрібно було знайти /etc/environmentUbuntu 16.04, шукаючи сховище Windows 10 NTFS. Я знайшов це тут:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Я змінив /mnt/c/на C:\номенклатуру Windows.
  • Я також змінив усі випадки /на \з тієї ж причини.
  • Вам потрібно замінити USER_NAMEсвоє ім’я користувача Windows.
  • Мені довелося скористатися, sudo -H Nautilusщоб отримати дозволи для перегляду файлів користувачів, що зберігаються у WSL.
  • НІКОЛИ не оновлюйте файли 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

0

За допомогою поточного інсайдера Windows 10 (Швидке дзвінок: Windows 10 build 19025.1) ви можете встановити дистрибутив як мережевий диск. WSL доступний як wls$, шлях - ваше ім'я розповсюдження ( wsl -l -q).

Наприклад net use Z: \\wsl$\Debian /PERSISTENT:YES


Ви впевнені, що це обмежено WSL2? Я думав, що з 1903 року ви можете вивчити вміст файлу файлів WSL всередині Windows. Створити місце розташування карти на карті можна було б із цією зміною.
Рамхаунд

Як я писав, я не впевнений у WSL2. Є два моменти: введення WSL2 (від зборки 18432) та дистрибутив, підтримуваний WSL 2. Ця функція з'являється разом із WSL2, і я сподіваюся, що вона працює з будь-яким дистрибутивом.
лоша

1909 (WSL2) - це 18363,476, а не 18432 (Insider Preview 20H1), якщо ви не говорите, це лише на 20H1 побудовах?
Рамхаунд

-1

У Bash, щоб переглянути поточний каталог у Windows File Explorer, просто введіть:

explorer .

Не залишайте поза увагою "." Це відкриє провідник Windows у поточній папці, і ви зможете побачити, де все стосується решти вашої системи Windows.


Дякуємо за внесок, але це працює лише в Bash, а не в WSL (підсистема WIndows для Linux), про що йдеться у цьому питанні. Я б радив вам видалити свою відповідь, інакше вона може бути знижена.
rmcsharry

Це не працює у WSL
Микола Антон Ліннеруп
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.