Apa direktori home pada Windows Subsystem untuk Linux?

87

Ketika saya mulai bashpada Subsistem Windows untuk Linux, itu menjatuhkan saya di direktori

/mnt/c/Users/<username>

Ketika saya lsdirektori ini, saya melihat direktori Desktop, Documents, dll yang dapat saya lihat adalah di C:\Users\<username>menggunakan Windows File Explorer. Karena di sinilah bashprogram dimulai, saya berharap ini adalah direktori home saya, tetapi ketika saya mengetik salah satu cdatau cd ~saya dibawa ke

/home/<username>

yang berisi file saya .bashrc, .profiledll. yang saya harapkan akan temukan di direktori home saya di kotak Linux. Selain itu, masuk cd ../..dari sini saya bisa melihat direktori bin, etcdan seterusnya, lagi seperti yang diharapkan pada kotak Linux.

Saya punya dua pertanyaan tentang semua ini:

  1. Apa sebenarnya yang /mnt/c/Users/<username>dibandingkan dengan C:\Users\<username>? Sepertinya mereka satu dalam hal yang sama --- jadi apa itu /mnt/c/?
  2. Bagaimana saya bisa melihat file /home/<username>menggunakan Windows File Explorer? Bukannya saya benar-benar ingin --- Saya hanya mencoba untuk merasakan bagaimana Windows mengatur Subsistem ini untuk Linux.
bcf
sumber

Jawaban:

103

Untuk 2: Jalur saat ini sekarang terkait dengan distribusi mana yang telah Anda instal dari Microsoft Store daripada satu jalur global. Jadi, untuk Ubuntu sekarang berada di:

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

Saya berasumsi distribusi lain akan berada di lokasi yang sama di bawah folder masing-masing di bawah:

%LOCALAPPDATA%\Packages\
Michael Bond
sumber
11
Adakah yang menganggap praktik ini mengganggu? Bukankah folder HOME saya seharusnya menjadi SATU tempat yang aman untuk data SAYA di dalam repo? Dengan pendekatan ini, repo yang rusak dan instal ulang selang DATA SAYA tanpa upaya untuk melindunginya sama sekali DAN itu disembunyikan ketika saya sudah memiliki NYATA / rumah. Mengapa data tidak bertahan di sana? Ini semua lebih berbahaya karena kita sekarang didorong untuk mencoba / menggunakan / menukar distro (WLinux). Benar-benar terasa seperti seseorang tidak memikirkan semua ini.
rainabba
Dalam kasus saya (1809) folder tersebut bernama CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
jao
2
Catatan Penting: Anda sebaiknya tidak mencari-cari file Linux menggunakan alat Windows. Lihat: blogs.msdn.microsoft.com/commandline/2016/11/17/… (juga lihat posting blog itu sendiri)
coltoneakins
fantastis. alasan lain git untuk windows / mingw masih bekerja lebih baik ... lebih banyak pemikiran dimasukkan ke dalam beban kerja harian nyata. apakah ada cara untuk memetakannya kembali dengan benar?
enorl76
1
@rainabba Pada awalnya saya setuju tapi setelah beberapa pemikiran, saya masih memilih untuk menggunakan Windows daripada Ubuntu full-blown. Karena itu saya memperlakukan WSL sebagai cara untuk mengakses alat-alat Linux tetapi masih memperlakukan sistem file windows saya sebagai warga negara kelas satu. Begitu /mnt/c/juga di mana saya menyimpan semuanya di WSL. Saya akan senang jika WSL dikembalikan ke LWS; artinya akan luar biasa jika kita semua menjalankan Ubuntu dengan Subsistem Linux untuk Windows untuk menjalankan salinan lengkap Windows 10 yang terintegrasi ke dalam Ubuntu. Saya tahu, itu akan jauh lebih sulit tetapi seseorang dapat bermimpi.
Chev
29
  1. /mnt/csama persis dengan C:\. Itu hanya sintaks untuk mendapatkannya dari WSL.
  2. Lihat C:\Users\<username>\AppData\Local\Lxss\rootfs.
Joseph Sible-Reinstate Monica
sumber
8
Peringatan: blogs.msdn.microsoft.com/commandline/2016/11/17/… itu tempatnya ya tapi jangan ubah apa-apa.
chx
6
Pada 2018, jawaban ini tidak valid lagi. Lihat jawaban @ MichaelBond.
dr01
11
Sekarang beralih ke C:\Users\[USERNAME]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_[CODE]\LocalState\rootfs\ Anda mungkin menyadari betapa buruknya jika Anda mengedit /secara manual
mementototem
untuk akses mudah melalui copy-paste, `% LOCALAPPDATA% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_ [CODE] \ LocalState \ rootfs`
ranting
Perhatikan bahwa folder lxss akan disembunyikan di File Explorer kecuali Anda menghapus centang "Opsi folder> Lihat: Pengaturan lanjutan: Sembunyikan file sistem operasi yang dilindungi (Disarankan)". Tetapi meskipun tersembunyi, Anda masih bisa membuka folder di File Explorer jika Anda memasukkannya di jalur folder.
Daryn
18

Tentang sistem file yang terpasang /mnt/c

  1. Apa sebenarnya / mnt / c / Pengguna / dibandingkan dengan C: \ Users \? Tampaknya mereka satu dalam hal yang sama --- jadi apa / mnt / c /?

Berbeda dengan Windows, Linux (dan sistem lain yang berbasis Unix) menggunakan struktur folder tunggal terlepas dari jumlah disk yang Anda miliki. Jika Anda memiliki banyak disk, semua disk ini harus saya pasang ke struktur folder di beberapa titik.

  • Biasanya, semua disk (berbeda dari yang digunakan untuk boot sistem) dipasang di folder bernama /mntatau/media

WSL memiliki tipe khusus sistem file bernama DrvFS yang memberi Anda akses ke disk yang digunakan di windows. Anda dapat menggunakan DrvFS untuk melakukan mount, tidak hanya sistem file windows Anda, tetapi juga disk jaringan dan jenis media lainnya.

  • Di WSL, secara default, C:disk di windows dipasang di bawah/mnt/c
  • Jika Anda memiliki disk lain, misalnya D:disk di windows, disk tersebut akan dipasang di bawah/mnt/d

File yang Anda lihat /mnt/cadalah sama dengan yang Anda miliki C:. Jika Anda memodifikasi beberapa file, Anda akan mendapatkan perubahan di windows juga.

Anda dapat menggunakan mountperintah untuk mengakses jenis media lain (mis. Drive yang dapat dilepas atau berbagi jaringan).


Tentang lokasi /home/<username>

  1. Bagaimana saya bisa melihat file di / home / menggunakan Windows File Explorer? Bukannya aku benar-benar ingin --- Aku hanya mencoba untuk merasakan bagaimana Windows mengatur Subsistem ini untuk Linux.

Di WSL, semua sistem file linux terletak di bawah folder Windows. Lokasi folder tergantung pada versi Windows dan distribusi WSL yang Anda gunakan.

  • WSL versi awal menyimpan sistem file linux di%LOCALAPPDATA%\Lxss\rootfs
  • Distribusi WSL diinstal dari Windows Store , dimulai pada Windows Build 16215 (pertengahan 2017), gunakan folder like %LOCALAPPDATA%\Packages\...\LocalState\rootfs. Nama paket bervariasi tergantung pada distribusinya (mis. Berbeda untuk Ubuntu daripada untuk Debian)
  • Distribusi Linux yang diinstal menggunakan alat lain , seperti lxRunOffline atau WSL-DistroLauncher dapat menyimpan sistem file linux ke lokasi mana pun.

Anda dapat memeriksa banyak opsi untuk mengetahui lokasi folder WSL . Sebagai contoh, saya pikir pilihan termudah adalah menggunakan lxRunOffline untuk mengetahui folder instalasi.

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

Setelah Anda mengetahui lokasi folder instalasi, /home/<username>ada di bawah <installation folder>\rootfs\home\username.

  • Misalnya, jika folder instalasi Anda c:\wsl\ubuntu
  • yang /home/<username>ada dic:\wsl\ubuntu\rootfs\home\username

CATATAN: Baik Linux dan Windows menyimpan izin file dengan berbagai cara. Saat ini, WSL DrvFS menyimpan izin Linux sebagai Streams (metadata) yang dilampirkan ke file yang dapat Anda lihat di Windows. Microsoft tidak merekomendasikan untuk memodifikasi file linux menggunakan program Windows. Ada kemungkinan bahwa beberapa aplikasi Windows merusak izin linux tanpa menyadarinya.

Jaime
sumber
5

Saya kira itu tergantung pada windows build mana Anda berada, tetapi bagi saya pada tahun 2018 pada Windows 10 Pro 64-bit, Versi 1709 (OS Build 16299.522) dan juga Versi 1803 (OS Build 17134.165) [pembaruan windows ironisnya terjadi ketika saya sedang mengetik ini] lokasinya masih:

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

Caranya adalah ketika Anda berada di sana, C:\Users\<username>\AppData\LocalAnda tidak akan melihat lxssfolder (kecuali Anda tidak mencentang "Sembunyikan file sistem operasi terlindungi (Disarankan)" di opsi folder Anda).

Namun cukup tambahkan \lxssdi bilah alamat windows explorer dan itu akan membawa Anda ke folder.

(Catatan saya tidak memiliki %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgscatau yang serupa yang disebutkan dalam jawaban Michael Bonds)

Memperbarui

Ternyata ada WSL warisan yang adalah apa yang saya instal. Sekarang WSL disediakan melalui aplikasi Microsoft store. Ada versi untuk Ubuntu 18.04 LTS dan sekarang juga beberapa rasa Linux (misalnya Debian). Jika Anda ingin menjadi yang terbaru, Anda mungkin ingin menghapus instalasi WSL lama dan menginstal versi Microsoft store .

Di mana folder rumah Anda akan tergantung pada jenis WSL yang telah Anda instal.

Pengguna
sumber
4
  1. Menggunakan konsol WSL bash, di direktori home Anda, buat file dengan nama spesifik arbitrer seperti "test_here.txt".
  2. Kemudian menggunakan Windows Explorer, menggunakan kotak pencarian, cari file test_here.txt.
  3. Pada file yang ditemukan> klik kanan> Buka lokasi file.
Ellis
sumber
Saya mencoba ini. Itu tidak bekerja. Saya tidak melihat file dalam pencarian. Namun, jika saya meletakkan file di / mnt / c / Users / <username> itu jelas berfungsi.
Eamonn Kenny
Saya khawatir saya sudah mencoba WSL tetapi saya tidak menggunakannya lagi. Saya merasa tidak banyak berguna. (Saya menggunakan cygwin setiap hari, bukan WSL, dan saya merasa sangat berguna.) Jadi saya tidak dapat memverifikasinya lagi, maaf;)
Ellis
Mencari rootfs berfungsi. Anda kemudian dapat menavigasi sistem file unbuntu dari sana.
tigr
2

Empat langkah untuk windows 10 pro untuk menyematkan Debian / Ubuntu / OpenSUSE $ HOME Anda ke menu mulai Windows:

  1. Dari menu mulai, mulai File Explorer
  2. Di bilah alamat (bukan bilah pencarian) ketik% LOCALAPPDATA%.
  3. Di bilah pencarian cari nama direktori $ HOME Anda, dalam kasus saya itu adalah ekenny. Akan ada sekitar 3 versi ini tetapi Anda ingin yang memiliki jalan yang sangat panjang.
  4. Klik kanan direktori home Anda dan klik "Sematkan ke Mulai".

Sekarang Anda memiliki direktori home Anda disematkan ke menu mulai Anda. Saya mencoba membuat jalan pintas tapi itu tidak masuk akal.

Eamonn Kenny
sumber
0

Saya hanya perlu menemukan /etc/environmentmenggunakan Ubuntu 16.04 melihat ke penyimpanan Windows 10 NTFS. Saya menemukannya di sini:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Saya mengubah /mnt/c/ke C:\untuk nomenklatur Windows.
  • Saya juga mengubah semua kejadian /menjadi \untuk alasan yang sama.
  • Anda harus mengganti USER_NAMEdengan Nama Pengguna Windows Anda.
  • Saya harus menggunakan sudo -H Nautilusuntuk mendapatkan izin untuk melihat File Pengguna yang disimpan di WSL.
  • JANGAN PERNAH memperbarui file Linux Anda di WSL menggunakan aplikasi Windows. Ini akan merusak data Linux Anda .

Dari sisi Linux (Ubuntu 16.04) nomenklaturnya adalah:

$ 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
sumber
0

Dengan Windows 10 Insider (Fast ring: Windows 10 build 19025.1) saat ini, Anda dapat memasang distro Anda sebagai drive jaringan. WSL dapat diakses karena wls$, path adalah nama distribusi Anda ( wsl -l -q).

Sebagai contoh net use Z: \\wsl$\Debian /PERSISTENT:YES

anak kuda
sumber
Apakah Anda yakin ini terbatas pada WSL2? Saya pikir pada tahun 1903 Anda dapat menjelajahi isi struktur file WSL dari dalam Windows. Membuat lokasi jaringan peta akan dimungkinkan dengan perubahan itu.
Ramhound
Saat saya menulis saya tidak yakin tentang WSL2. Ada dua poin: memperkenalkan WSL2 (dari build 18432) dan distribusi yang didukung oleh WSL 2. Fitur ini muncul bersama dengan WSL2 dan saya harap berfungsi dengan distribusi apa pun.
anak kuda
1909 (WSL2) adalah 18363.476, bukan 18432 (Insider Preview 20H1) kecuali Anda mengatakan, ini hanya pada build 20H1?
Ramhound
-1

Di Bash, untuk melihat direktori saat ini di Windows File Explorer cukup masukkan:

explorer .

Jangan tinggalkan "." Ini akan membuka windows explorer di folder saat ini dan Anda dapat melihat di mana semuanya terkait dengan seluruh sistem windows Anda.

Gary Barrett
sumber
Terima kasih atas kontribusinya tetapi itu hanya bekerja di Bash, bukan di WSL (WIndows Subsystem untuk Linux) yang menjadi tujuan pertanyaan ini. Saya akan menyarankan Anda untuk menghapus jawaban Anda atau itu mungkin akan dibatalkan.
rmcsharry
Ini tidak berfungsi di WSL
Nicolai Anton Lynnerup