Bash บน Ubuntu บน Windows - ไฟล์จะไม่ปรากฏหลังจากอัปเดตใน Windows


0

ฉันประสบปัญหากับ Bash บน Ubuntu บน Windows: เมื่อฉันแก้ไขไฟล์ที่อยู่ในไดเรกทอรี Bash home ของฉัน C: \ Users \ me \ AppData \ Local \ lxss \ home \ me \ โดยใช้ซอฟต์แวร์ที่ใช้ Windows (notepad ++ สำหรับ ตัวอย่าง) Bash ไม่เห็นไฟล์อีกต่อไป

ดังนั้นถ้าฉันสร้างไฟล์ในโฮมไดเร็กตอรี่ของฉันโดยใช้ Bash แล้วแก้ไขไฟล์เดียวกันโดยใช้ Windows, Bash จะไม่เห็นมันอีกต่อไป เช่นเดียวกับการคัดลอกไฟล์จาก Windows ไปยังโฮมไดเร็กตอรี่ Bash ไม่สามารถมองเห็นได้

มีวิธีใดบ้างที่จะทำให้ไฟล์เหล่านั้นปรากฏแก่ Bash?

ไฟล์ PS และการเปลี่ยนแปลงในไดเรกทอรี Windows สามารถมองเห็นได้จาก Bash ถึง / mnt / c / ... และยังคงมองเห็นได้หลังจากแก้ไขและย้ายไฟล์ไปรอบ ๆ


ฉันเพิ่งสร้างไดเรกทอรีบ้านใหม่ใน C: เพื่อที่จะสามารถใช้เป็น / mnt / c / home ตอนนี้ฉันใช้มันเป็นไดเรกทอรีบ้านของฉันแทน ~ สิ่งนี้ดูเหมือนจะนำมาซึ่งความไม่สะดวกน้อยที่สุดและให้วิธีแก้ปัญหาที่มั่นคงสำหรับปัญหานี้
SergeyOvchinnik

MS ทำงานอย่างนั้น มีวิธีแก้ไขปัญหาและวิธีแก้ไขปัญหามากมายในรายงานปัญหาที่เกี่ยวข้อง
Jaime

คำตอบ:


1

ทางออกที่ง่ายที่สุดคือการคัดลอกไฟล์ไปยังไดเรกทอรีอื่นก่อนที่จะแก้ไขและคัดลอกไปยังตำแหน่งเดิมหลังจากแก้ไข

ดูคำถามนี้: ระบบย่อย Windows Linux - การเข้าถึงไฟล์นอก Ubuntu

มันมีการอ้างอิงถึงโครงการ GitHub สำหรับBashOnWindowsโครงการ โดยIssue 402เฉพาะอย่างยิ่งหรือเฉพาะเจาะจงมากขึ้นความคิดเห็นนี้ซึ่งอ่าน:

@ducminhnguyen - ไม่รองรับการคัดลอกโดยตรงไปยังระบบย่อย Linux จาก Windows ตามการอภิปรายเกี่ยวกับตั๋วอื่น ๆ มีไดเรกทอรีภายใต้ AppData อยู่ที่ไหนสักแห่ง (ฉันลืมที่) ที่ดูเหมือนจะมีไฟล์สำหรับระบบไฟล์ WSL แต่ถ้าคุณใส่ไฟล์ใหม่ที่นั่นหรือแก้ไขไฟล์ที่มีอยู่ที่นั่นการเปลี่ยนแปลงของคุณจะไม่ถูกต้องภายใน WSL

สิ่งที่ฉันคาดเดาได้ดีที่สุดคือ Linux ต้องเก็บข้อมูลเมตาที่ต่างกัน (และข้อมูลแคชเพิ่มเติมเป็นต้นเนื่องจากรูปแบบการกำหนดบัฟเฟอร์ของดิสก์นั้นแตกต่างกัน) เกี่ยวกับไฟล์ที่มากกว่า Windows และปัจจุบันนี้ก็มีการนำมาใช้โดยการจัดเก็บสำเนาต้นแบบของโครงสร้าง ของระบบไฟล์ Linux ในฐานข้อมูลบางประเภทและเพียงใช้ระบบไฟล์ Windows เป็น BLOB-store ที่สะดวกสำหรับฐานข้อมูลนั้น

หากคุณต้องการทำสิ่งนี้จริงๆวิธีแก้ปัญหาคือการเขียนสคริปต์ drag'n'drop .bat หรือ somesuch ที่ทำ bash.exe -c "mv% 1 / home / $ USER /" (คุณจะต้องทำงานอย่างชาญฉลาดกับ sed และ tr เพื่อแปล% 1 เป็นเส้นทาง WSL ที่ถูกต้อง)

อีกวิธีหนึ่ง - คุณสามารถวางไฟล์ของคุณในไดเรกทอรี Windows และใน WSL ทำ "cd ~; ln -s / mnt / c / path / to / my / files" เพื่อให้ปรากฏใน homedir WSL ของคุณหรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.