ฉันสังหรณ์ว่าเกิดจากบางสิ่งในสคริปต์หรือไฟล์เริ่มต้นของคุณ (สมมติว่า ~/.bashrc
หรือ ~/.profile
) อ้างอิงไม่ถูกต้อง เส้นทาง
ตัวแปร. เนื่องจาก WSL ผนวกเส้นทาง Windows เข้ากับเส้นทาง WSL โดยอัตโนมัติ จึงเพิ่มองค์ประกอบเส้นทางบางอย่างด้วย "Program Files" ซึ่งถูกต้อง
แต่ต้องมีการอ้างอิงตัวแปรที่เหมาะสม ตรวจสอบสคริปต์ของคุณเพื่อใช้ $เส้นทาง
และอ้างอิง (หรือเพิ่มบรรทัดที่อาจไม่เหมาะสมในคำถามของคุณหากคุณต้องการความช่วยเหลือ) หากคุณไม่เห็นสิ่งที่น่าสงสัยในสคริปต์ ให้ตรวจสอบของคุณด้วย ~/.bashrc
และ ~/.profile
.
แก้ไข/ปรับปรุง: ฉันค่อนข้างแน่ใจว่าบรรทัดที่ละเมิดจะอยู่ในสคริปต์ซึ่งกำลังดำเนินการอยู่ เส้นประ
(เช่น. ช
). Bash สามารถจัดการสิ่งนี้ได้ดีโดยไม่ต้องอ้างเพิ่มเติม:
> ส่งออก PATH=$PATH:เส้นทางใหม่
> ก้อง $?
0
> echo $เส้นทาง
> # เอาต์พุต PATH ที่ถูกต้อง แม้จะมีช่องว่างในเส้นทาง Windows
อย่างไรก็ตามเรียกใช้ ช
และลองแบบเดียวกัน:
$ ส่งออก PATH=$PATH:เส้นทางใหม่
sh: 1: ส่งออก: ไฟล์/NVIDIA: ชื่อตัวแปรไม่ถูกต้อง
$ ส่งออก PATH="$PATH":เส้นทางใหม่
$ก้อง$?
0
$echo $เส้นทาง
# เอาต์พุต PATH ที่ถูกต้อง แม้จะมีช่องว่างในเส้นทาง Windows
นอกจากนี้ยังมีโซลูชัน "bandaid" เพื่อปิดใช้งานคุณลักษณะ WSL ที่ผนวกเส้นทาง Windows เข้ากับเส้นทาง WSL/Linux คุณสามารถทำได้โดยการสร้าง (หรือแก้ไขหากมีอยู่แล้ว) /etc/wsl.conf
และเพิ่มบรรทัดต่อไปนี้:
[การทำงานร่วมกัน]
ผนวก WindowsPath=เท็จ
จากนั้นหยุดอินสแตนซ์ด้วย wsl --terminate Ubuntu
(สมมติว่าเป็นชื่อ distro เริ่มต้น) และรีสตาร์ท WSL
มันไม่ใช่ ดี วิธีแก้ปัญหาถาวร IMHO เนื่องจากทำให้เรียกใช้แอพ Windows (เช่น VSCode) ได้ยากขึ้นมากเมื่อไม่ได้อยู่ในเส้นทาง
ดีกว่าที่จะหาปัญหาหลักและแก้ไขในสคริปต์