ฉันติดตั้งระบบย่อย Ubuntu บน Windows 10 (หลังจากเปิดใช้งานฟีเจอร์ในการตั้งค่า) แต่ไดเรกทอรีรากของระบบไฟล์ Ubuntu อยู่ที่ไหนในไดรฟ์
wsl.exe
เช่นwsl chmod 600 ~/.ssh/id*
- ไม่ได้คัดลอกไฟล์ลงในโฟลเดอร์เหล่านี้ผ่านทางระบบแฟ้มของ Windows
ฉันติดตั้งระบบย่อย Ubuntu บน Windows 10 (หลังจากเปิดใช้งานฟีเจอร์ในการตั้งค่า) แต่ไดเรกทอรีรากของระบบไฟล์ Ubuntu อยู่ที่ไหนในไดรฟ์
wsl.exe
เช่นwsl chmod 600 ~/.ssh/id*
- ไม่ได้คัดลอกไฟล์ลงในโฟลเดอร์เหล่านี้ผ่านทางระบบแฟ้มของ Windows
คำตอบ:
สำหรับ Ubuntu ที่ติดตั้งจากร้าน Windows:
การแจกจ่ายแต่ละรายการที่คุณติดตั้งผ่านร้านค้าจะถูกติดตั้งลงในไดเรกทอรี appdata ของแอปพลิเคชันนั้น ตัวอย่างเช่น:
C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
- benhillis
ในการทำซ้ำก่อนหน้าของ Windows Subsystem สำหรับ Linux ระบบไฟล์ Ubuntu นั้นอยู่ที่%localappdata%\Lxss
(เช่นC:\Users\Username\AppData\Local\Lxss
- แทนที่ชื่อผู้ใช้ด้วยชื่อผู้ใช้ของคุณบน Windows) ดูโพสต์บล็อก WSL เกี่ยวกับการสนับสนุนระบบไฟล์ :
ระบบไฟล์หลักที่ใช้โดย WSL คือ VolFs มันถูกใช้เพื่อเก็บไฟล์ระบบ Linux รวมถึงเนื้อหาของโฮมลินุกซ์ของคุณ ดังนั้น VolFs จึงสนับสนุนคุณสมบัติส่วนใหญ่ที่ Linux VFS มอบให้รวมถึงการอนุญาต Linux ลิงก์สัญลักษณ์ FIFOs ซ็อกเก็ตและไฟล์อุปกรณ์
VolFs ใช้เพื่อเมาท์ไดเร็กทอรีรูท VFS โดยใช้
%LocalAppData%\lxss\rootfs
เป็นหน่วยเก็บข้อมูลสำรอง นอกจากนี้ยังมีหมาป่าอากาศเพิ่มเติมบางจุดเมาอยู่ที่สะดุดตาที่สุด/root
และ/home
ที่ติดตั้งใช้%LocalAppData%\lxss\root
และ%LocalAppData%\lxss\home
ตามลำดับ เหตุผลสำหรับการเมาต์แยกเหล่านี้คือเมื่อคุณถอนการติดตั้ง WSL โฮมไดเร็กทอรีจะไม่ถูกลบโดยค่าเริ่มต้นดังนั้นไฟล์ส่วนบุคคลใด ๆ ที่เก็บไว้ที่นั่นจะถูกเก็บไว้
การสร้าง / แก้ไขไฟล์ใด ๆ ภายในระบบย่อย Linux โดยใช้แอพและเครื่องมือ Windows อาจทำให้ข้อมูลเสียหายและข้อมูลสูญหายในระบบย่อย Ubuntu! (ขอบคุณRich Turnerสำหรับการแนะนำคำเตือนเหล่านี้!) ไม่รองรับอย่างแน่นอน จากบล็อกโพสต์เดียวกัน:
การทำงานร่วมกันกับ Windows
แม้ว่าไฟล์ VolFs จะถูกเก็บไว้ในไฟล์ปกติบน Windows ในไดเรกทอรีที่กล่าวถึงข้างต้น แต่การทำงานร่วมกับ Windows ไม่ได้รับการรองรับ หากมีการเพิ่มไฟล์ใหม่ลงในหนึ่งในไดเรกทอรีเหล่านี้จาก Windows จะไม่มี EAs ที่จำเป็นสำหรับ VolFs ดังนั้น VolFs จึงไม่ทราบว่าต้องทำอย่างไรกับไฟล์และไม่สนใจเลย บรรณาธิการจำนวนมากจะตัด EAs เมื่อบันทึกไฟล์ที่มีอยู่อีกครั้งทำให้ไฟล์ใช้ไม่ได้ใน WSL
ระบบไฟล์ Windows ของคุณอยู่ที่/mnt/c
ในสภาพแวดล้อมเชลล์ Bash
ที่มา: บล็อกของ Dustin Kirkland , howtogeek
attrib -s -h lxss
ซึ่งจะยกเลิกการทำเครื่องหมายเป็นไดเรกทอรีระบบด้วย
/mnt/<drive>/
แต่ไม่ปลอดภัย (ยัง) ในการเข้าถึงระบบไฟล์ Linux จาก Windows ซึ่งเป็นเหตุผลที่เราไม่ให้เข้าถึงระบบไฟล์ distro ได้ง่าย
สิ่งนี้ดูเหมือนว่าจะมีการเปลี่ยนแปลงตั้งแต่เริ่มใช้ Bash และไม่ได้ใช้กับการกระจายจาก Windows Store หรืออาจจะไม่สอดคล้องกับระบบทั้งหมดเนื่องจากไดเรกทอรีหลักของฉันอยู่ในตำแหน่งอื่น:
%localappdata%\lxss\home\{username}
หรือ:
C:\Users\{user}\AppData\Local\lxss\{username}
{user}
ชื่อผู้ใช้ Windows ของคุณอยู่ที่ไหนและ{username}
ตั้งค่าชื่อผู้ใช้ UNIX ในระหว่างการติดตั้ง
ดังนั้นไดเรกทอรีรากจะเป็น:
%localappdata%\lxss
โปรดทราบว่าไดเรกทอรีรากอาจไม่ปรากฏใน Windows Explorer จาก%localappdata%
ไดเรกทอรี คุณควรจะสามารถเข้าถึงมันได้โดยพิมพ์ลงใน 'address bar' ของ Explorer
หากคุณติดตั้ง Linux จาก MS Market:
พวกเขาวาง distros ใต้:
$ cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/\{861c29b4-ebe2-49a5-8a22-7e53a27934a0\}/BasePath
C:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
distro เริ่มต้นที่กำหนดโดย:
bash# cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/DefaultDistribution
{861c29b4-ebe2-49a5-8a22-7e53a27934a0}
Linux root อยู่ลึก:
c:/Users/user/AppData/Local/Packages/46932SUSE.openSUSELeap42.2_022rs5jcyhyac/LocalState/rootfs
PS ฉันใช้ Cygwin เพื่อสำรวจรีจิสตรีคีย์
หากใช้ PowerShell สำหรับเป้าหมายเดียวกันคำสั่งจะเป็น:
# obtain the value of the ID of the default Linux distribution (and store it in a variable to avoid escaping characters issues):
$DEFAULT_LXSS_ID = (Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\ -name DefaultDistribution)
# which will have a value like:
echo $DEFAULT_LXSS_ID
{bde539d6-0c87-4e12-9599-1dcd623fbf07}
# display the directory containing the rootfs Windows directory (mapped to the / Linux directory)
Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\$DEFAULT_LXSS_ID -name BasePath | Format-List -property "BasePath"
%LocalAppData%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState
สิ่งเดียวที่ใช้ได้ผลสำหรับฉันคือ%localappdata%\lxss\home\{username}
ที่ซึ่ง{username}
เป็นชื่อผู้ใช้ BASH ของคุณที่คุณให้ไว้ระหว่างการติดตั้ง ด้วยเหตุผลบางอย่างหลังจากการแสดง lxss ของโฟลเดอร์ที่ซ่อนอยู่ปฏิเสธที่จะปรากฏในC:\Users\WINDOWS-USER\AppData\Local\
และยังให้C:\
เส้นทางแบบเต็มกับ windows และชื่อผู้ใช้ BASH ไม่ทำงานอย่างใดอย่างหนึ่ง
และโปรดสร้างทางลัดบนเดสก์ท็อปสำหรับสิ่งที่ใช้งานได้
คุณสามารถเปิด Bash ได้อย่างรวดเร็วจากหน้าต่าง File Explorer ของโฟลเดอร์ที่เปิดโดยการพิมพ์bash
ในแถบตำแหน่ง
มันเพียงพอแล้ว.
นอกจากนี้คุณสามารถเพิ่มรายการเมนูบริบท ฉันเองไม่แนะนำถ้าไม่จำเป็นเพราะการเพิ่มทางลัดไปยังเมนูบริบทใช้ RAM มากกว่า
https://www.howtogeek.com/270810/how-to-quickly-launch-a-bash-shell-from-windows-10s-file-explorer/
ls -a
มันไม่ได้แสดงไฟล์ที่ฉันเพิ่ม Bash ไม่รู้จักไฟล์ที่ฉันปล่อยผ่านโปรแกรมสำรวจไฟล์ windows ซึ่งสำหรับฉันได้พ่ายแพ้อย่างสิ้นเชิงกับวัตถุประสงค์ของการติดตั้ง bash บน windows