Co to jest katalog domowy w podsystemie Windows dla systemu Linux?


87

Kiedy uruchamiam bashw Podsystemie Windows dla Linuksa, umieszcza mnie w katalogu

/mnt/c/Users/<username>

Kiedy lsten katalog, widzę, katalogi Desktop, Documentsitp, które widzę są w C:\Users\<username>użyciu pliku Windows Explorer. Ponieważ to jest, gdy bashrozpoczął program Spodziewałem to mój katalog domowy, ale kiedy wpisz jedno cdlub cd ~mam prawidłowe

/home/<username>

który zawiera mój .bashrc, .profileitp plik który spodziewałbym się znaleźć w moim katalogu domowym w Linuksie. Ponadto, wchodząc cd ../..stąd widzę, katalogi bin, etci tak dalej, znowu zgodnie z oczekiwaniami na Linuksie.

Mam dwa pytania dotyczące tego wszystkiego:

  1. Z czym dokładnie się /mnt/c/Users/<username>porównuje C:\Users\<username>? Wydaje się, że są jednym w tym samym --- co to jest /mnt/c/?
  2. Jak mogę wyświetlić pliki /home/<username>za pomocą Eksploratora plików Windows? Nie to, że naprawdę kiedykolwiek chciałbym --- staram się po prostu zrozumieć, w jaki sposób system Windows organizuje ten podsystem dla systemu Linux.

Odpowiedzi:


103

W przypadku 2: bieżąca ścieżka jest teraz związana z dystrybucją zainstalowaną ze sklepu Microsoft Store, a nie z jedną ścieżką globalną. W przypadku Ubuntu jest on teraz zlokalizowany pod adresem:

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

Zakładam, że inne dystrybucje będą w podobnej lokalizacji w odpowiednich folderach pod:

%LOCALAPPDATA%\Packages\

11
Czy ktoś jeszcze przeszkadza w tej praktyce? Czy mój folder HOME nie powinien być JEDNYM bezpiecznym miejscem dla MOICH danych w repozytorium? Przy takim podejściu, zepsute repozytorium i ponowna instalacja węży MOJE DANE bez żadnej próby ich ochrony ORAZ są ukryte, gdy mam już PRAWDZIWĄ / domową. Dlaczego dane tam nie są utrwalane? Jest to tym bardziej niebezpieczne, że jesteśmy zachęcani do wypróbowania / używania / zamiany dystrybucji (WLinux). Naprawdę czuję, że ktoś nie przemyślał tego wszystkiego.
rainabba

W moim przypadku (1809) folder nazywa się CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
jao

2
Ważna uwaga: Nadal nie powinieneś przeszukiwać plików systemu Linux za pomocą narzędzi systemu Windows. Zobacz: blogs.msdn.microsoft.com/commandline/2016/11/17/… (zobacz także sam post na blogu)
coltoneakins

fantastyczny. Kolejny powód, dla którego git dla Windows / Mingw nadal działa lepiej ... znacznie więcej przemyślenia w codzienne obciążenia. czy istnieje sposób, aby poprawnie odwzorować?
enorl76

1
@rainabba Na pierwszy rzut oka się zgadzam, ale po namyśle nadal wybieram system Windows zamiast pełnego Ubuntu. Jako taki traktuję WSL jako sposób dostępu do narzędzi Linuksa, ale nadal traktuję mój system plików Windows jako obywatel pierwszej klasy. Tak więc /mnt/c/przechowuję wszystko w WSL. Bardzo bym chciał, gdyby WSL został odwrócony do LWS; co oznacza, że ​​byłoby wspaniale, gdybyśmy wszyscy uruchomili Ubuntu z Linux Subsystems dla Windows, aby uruchomić pełną kopię Windows 10 zintegrowaną z Ubuntu. Wiem, byłoby to o wiele trudniejsze, ale można marzyć.
Chev

29
  1. /mnt/cjest dokładnie taki sam jak C:\. To tylko składnia, aby dostać się do niego z WSL.
  2. Zajrzyj do środka C:\Users\<username>\AppData\Local\Lxss\rootfs.

8
Ostrzeżenie: blogs.msdn.microsoft.com/commandline/2016/11/17/… to miejsce tak, ale nic nie zmieniaj.
chx

6
Od 2018 r. Ta odpowiedź nie jest już aktualna. Zobacz odpowiedź @ MichaelBond.
dr01

11
Teraz wszystko poszło. C:\Users\[USERNAME]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_[CODE]\LocalState\rootfs\ Być może zdajesz sobie sprawę, jak źle, jeśli edytujesz /ręcznie
mementototem

dla łatwego dostępu przez kopiowanie makaronu, `% LOCALAPPDATA% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_ [CODE] \ LocalState \ rootfs`
gałązka

Zauważ, że folder lxss będzie ukryty w Eksploratorze plików, chyba że odznaczycie „Opcje folderów> Widok: Ustawienia zaawansowane: Ukryj chronione pliki systemu operacyjnego (zalecane)”. Ale nawet jeśli jest ukryty, nadal możesz otworzyć folder w Eksploratorze plików, jeśli podasz go w ścieżce folderu.
Daryn

18

Informacje o podłączonym systemie plików /mnt/c

  1. Czym dokładnie jest / mnt / c / Users / w porównaniu z C: \ Users \? Wygląda na to, że są jednym w tym samym --- co to jest / mnt / c /?

W przeciwieństwie do Windows, Linux (i inne systemy oparte na Uniksie) używają struktury pojedynczego folderu niezależnie od liczby posiadanych dysków. Jeśli masz wiele dysków, wszystkie te dyski muszą w pewnym momencie zostać zamontowane w strukturze folderów.

  • Zazwyczaj wszystkie dyski (inne niż używane do rozruchu systemu) są montowane w folderze o nazwie /mntlub/media

WSL ma specjalny typ systemu plików o nazwie DrvFS, który zapewnia dostęp do dysków używanych w systemie Windows. Możesz użyć DrvFS do montowania, nie tylko systemu plików Windows, ale także dysków sieciowych i innych typów nośników.

  • W WSL domyślnie C:dysk w systemie Windows jest montowany pod/mnt/c
  • Jeśli masz inny dysk, na przykład D:dysk w systemie Windows, zostanie on zamontowany pod/mnt/d

Pliki, które możesz zobaczyć, /mnt/csą takie same, jak te, które masz C:. Jeśli zmodyfikujesz jakiś plik, zmiany również otrzymasz w oknach.

Możesz użyć tego mountpolecenia, aby uzyskać dostęp do innych rodzajów mediów (np. Dyski wymienne lub udziały sieciowe).


Informacje o lokalizacji /home/<username>

  1. Jak mogę wyświetlić pliki w / home / za pomocą Eksploratora plików Windows? Nie to, że naprawdę kiedykolwiek chciałbym --- staram się po prostu zrozumieć, w jaki sposób system Windows organizuje ten podsystem dla systemu Linux.

W WSL cały system plików Linux znajduje się w folderze Windows. Lokalizacja folderu zależy od wersji systemu Windows i używanej dystrybucji WSL.

  • Początkowe wersje WSL przechowują system plików Linux%LOCALAPPDATA%\Lxss\rootfs
  • Dystrybucje WSL zainstalowane ze Sklepu Windows , począwszy od kompilacji Windows 16215 (połowa 2017 r.), Używają folderu podobnego do %LOCALAPPDATA%\Packages\...\LocalState\rootfs. Nazwa pakietu różni się w zależności od dystrybucji (np. Jest inna dla Ubuntu niż dla Debiana)
  • Dystrybucje systemu Linux zainstalowane przy użyciu innych narzędzi , takich jak lxRunOffline lub WSL-DistroLauncher, mogą przechowywać system plików linux w dowolnej lokalizacji.

Możesz sprawdzić wiele opcji, aby poznać lokalizację folderu WSL . Na przykład myślę, że najłatwiejszą opcją jest użycie lxRunOffline do poznania folderu instalacyjnego.

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

Gdy znasz lokalizację folderu instalacyjnego, /home/<username>jest poniżej <installation folder>\rootfs\home\username.

  • Na przykład, jeśli folder instalacji to c:\wsl\ubuntu
  • /home/<username>jest wc:\wsl\ubuntu\rootfs\home\username

UWAGA: Zarówno Linux, jak i Windows przechowują uprawnienia do plików na różne sposoby. Obecnie WSL DrvFS przechowuje uprawnienia systemu Linux jako strumienie (metadane) dołączone do plików, które można zobaczyć w systemie Windows. Microsoft nie zaleca modyfikowania plików linux za pomocą programów Windows. Możliwe, że niektóre aplikacje systemu Windows niszczą uprawnienia do systemu Linux bez uprzedzenia.


5

Podejrzewam, że może to zależeć od tego, na której wersji systemu Windows jesteś, ale dla mnie w 2018 roku na Windows 10 Pro 64-bit, wersja 1709 (kompilacja systemu operacyjnego 16299.522), a także wersja 1803 (kompilacja systemu operacyjnego 17134.165) [jak na ironię, aktualizacja systemu Windows pisał to] lokalizacja nadal:

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

Sztuczka polega na tym, że gdy jesteś na C:\Users\<username>\AppData\Localstronie, nie zobaczysz lxssfolderu (chyba że masz zaznaczone pole „Ukryj chronione pliki systemu operacyjnego (zalecane)” w opcjach folderów).

Wystarczy jednak dołączyć \lxssw pasku adresu Eksploratora Windows, aby przejść do folderu.

(Uwaga: nie miałem %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgscani nic podobnego, co zostało wspomniane w odpowiedzi Michaela Bondsa)

Aktualizacja

Okazuje się, że jest już starszy WSL, który właśnie zainstalowałem. Teraz WSL jest zapewniany przez aplikację sklepu Microsoft. Istnieją wersje dla Ubuntu 18.04 LTS, a także teraz kilka innych smaków Linuksa (np. Debian). Jeśli chcesz być na bieżąco, możesz odinstalować starszą wersję WSL i zainstalować wersję sklepu Microsoft .

To, gdzie znajduje się folder domowy, będzie zależeć od tego, który typ WSL został zainstalowany.


4
  1. Korzystając z konsoli bash WSL, w katalogu domowym utwórz plik o dowolnej, określonej nazwie, na przykład „test_here.txt”.
  2. Następnie za pomocą Eksploratora Windows, za pomocą pola wyszukiwania wyszukaj plik test_here.txt.
  3. Na znalezionym pliku> kliknij prawym przyciskiem myszy> Otwórz lokalizację pliku.

Próbowałem tego. To nie działa Nie widzę pliku w wyszukiwaniu. Jednak jeśli upuszczę plik w / mnt / c / Users / <nazwa użytkownika>, to oczywiście działa.
Eamonn Kenny

Obawiam się, że próbowałem WSL, ale już go nie używam. Nie uważam tego za przydatne. (Używam cygwina codziennie zamiast WSL i uważam, że jest bardzo przydatny.) Więc nie mogę tego więcej zweryfikować, przepraszam;)
Ellis

Wyszukiwanie rootfs działa. stamtąd możesz nawigować po systemie plików unbuntu.
tigr

2

Cztery kroki dla systemu Windows 10 pro, aby przypiąć Debian / Ubuntu / OpenSUSE $ HOME do menu Start systemu Windows:

  1. Z menu Start uruchom Eksploratora plików
  2. W pasku adresu (nie w pasku wyszukiwania) wpisz% LOCALAPPDATA%.
  3. W pasku wyszukiwania poszukaj nazwy katalogu $ HOME, w moim przypadku była to ekenny. Będą około 3 wersje tego, ale chcesz tę z naprawdę długą ścieżką.
  4. Kliknij prawym przyciskiem myszy swój katalog domowy i kliknij „Przypnij do startu”.

Teraz masz przypięty katalog domowy do menu Start. Próbowałem utworzyć skrót, ale nie jest to zrozumiałe.


0

Musiałem tylko znaleźć /etc/environmentza pomocą Ubuntu 16.04 patrząc na pamięć NTFS systemu Windows 10. Znalazłem to tutaj:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Zmieniłem /mnt/c/się C:\do nomenklatury Windows.
  • Zmieniłem również wszystkie wystąpienia /na \z tego samego powodu.
  • Musisz zastąpić USER_NAMEswoją nazwą użytkownika Windows.
  • Musiałem użyć, sudo -H Nautilusaby uzyskać uprawnienia do przeglądania plików użytkownika przechowywanych w WSL.
  • NIGDY nie aktualizuj plików Linux w WSL przy użyciu aplikacji Windows. Spowoduje to uszkodzenie danych w systemie Linux .

Od strony systemu Linux (Ubuntu 16.04) nazewnictwo wyglądałoby następująco:

$ 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

Dzięki obecnemu niejawnemu testerowi systemu Windows 10 (Fast ring: Windows 10 build 19025.1) możesz zamontować swoją dystrybucję jako dysk sieciowy. WSL jest dostępny wls$, ponieważ ścieżka jest nazwą Twojej dystrybucji ( wsl -l -q).

Na przykład net use Z: \\wsl$\Debian /PERSISTENT:YES


Czy na pewno jest to ograniczone do WSL2? Myślałem, że od 1903 r. Możesz przeglądać zawartość struktury pliku WSL z poziomu systemu Windows. Dzięki tej zmianie możliwe byłoby utworzenie mapy sieciowej.
Ramhound

Jak napisałem, nie jestem pewien co do WSL2. Są dwa punkty: wprowadzenie WSL2 (z kompilacji 18432) i dystrybucja wspierana przez WSL 2. Ta funkcja pojawia się wraz z WSL2 i mam nadzieję, że będzie działać z każdą dystrybucją.
źrebię

1909 (WSL2) to 18363.476, a nie 18432 (Insider Preview 20H1), chyba że mówisz, że dotyczy to tylko wersji 20H1?
Ramhound

-1

Aby wyświetlić bieżący katalog w Eksploratorze plików systemu Windows, w Bash wystarczy wpisać:

explorer .

Nie pomijaj „.” Spowoduje to otwarcie Eksploratora Windows w bieżącym folderze i możesz zobaczyć, gdzie wszystko jest w stosunku do reszty systemu Windows.


Dzięki za wkład, ale to działa tylko w Bash, a nie w WSL (WIndows Subsystem for Linux), o to właśnie chodzi w tym pytaniu. Radzę usunąć swoją odpowiedź, w przeciwnym razie może zostać odrzucona.
rmcsharry

To nie działa w WSL
Nicolai Anton Lynnerup,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.