ฉันประสบปัญหาในการเปิดรหัส Visual Studio
สถานการณ์คือฉันติดตั้งระบบไฟล์เซิร์ฟเวอร์ในเครื่องคอมพิวเตอร์ของฉัน (UBUNTU WSL) โดยใช้ SSHFS
ในกรณีปกติ ฉันสามารถเปิดไฟล์โดยใช้รหัส Visual Studio โดยใช้คำสั่ง รหัส <ชื่อไฟล์>
.
อย่างไรก็ตาม เมื่อฉันอยู่ในไดเร็กทอรีระบบไฟล์ของเซิร์ฟเวอร์ และฉันพยายามใช้คำสั่งนี้ ฉันได้รับข้อผิดพลาด
/mnt/c/Users/kurti/AppData/Local/Programs/Microsoft VS Code/Code.exe: อาร์กิวเมนต์ไม่ถูกต้อง
น่าแปลกที่ฉันสามารถใช้ gedit ในลักษณะเดียวกันได้โดยไม่มีปัญหาใดๆ เช่น gedit <ชื่อไฟล์>
.
สิ่งที่แปลกก็คือฉันสามารถใช้รหัสเพื่อเปิดไฟล์ / ไดเร็กทอรีในระบบไฟล์เซิร์ฟเวอร์เมื่อฉันเป็นโฟลเดอร์ใด ๆ ในระบบไฟล์ในเครื่องของฉัน ด้วยวิธีนี้ฉันสามารถเปิดไฟล์เซิร์ฟเวอร์ได้อย่างง่ายดายโดยใช้ รหัส </full/path/to/file>
.
นี่เป็นจุดบกพร่องที่เป็นไปได้ในรหัส Visual Studio หรือปัญหากับระบบของฉัน ?
แก้ไข:
ฉันสร้างงานใหม่เกี่ยวกับฟังก์ชัน/คำสั่งซึ่งก็คือ
ชื่อคำสั่ง: vcode
#!/bin/bash
fpath=$(เรียลพาธ $1)
(cd $HOME; รหัส fpath)
อัปเดต:
ฉันรายงานในหน้า WSL github ว่าเป็นปัญหา https://github.com/microsoft/WSL/issues/7890
รายละเอียดเฉพาะเพิ่มเติมดังนี้
ขั้นตอนการซื้อซ้ำ
ในเทอร์มินัล WSL
- เมานต์ระบบไฟล์เซิร์ฟเวอร์โดยใช้ sshfs (ในกรณีของฉันคือซูเปอร์คอมพิวเตอร์ของมหาวิทยาลัย)
sshfs -C <เซิร์ฟเวอร์_ชื่อ_และ_ip> <เมานต์_ตำแหน่ง>
mount_location ที่กำหนดเป็นไดเร็กทอรีว่างที่เรียกว่า smith_server พร้อมพาธ /home/k/smith_server/
- ไปที่ไดเรกทอรี
ซีดี /home/k/smith_server
- เปิดไดเร็กทอรีในโค้ด Visual Studio
รหัส
พฤติกรรมที่คาดหวัง
ลักษณะการทำงานที่คาดไว้คือ Visual Studio จะเปิดไดเร็กทอรี/ไฟล์โดยไม่คำนึงถึงไดเร็กทอรีการทำงานปัจจุบัน
พฤติกรรมจริง
ลักษณะการทำงานจริงคือเมื่อไดเร็กทอรีการทำงานปัจจุบันอยู่ภายในระบบไฟล์ของเซิร์ฟเวอร์ที่เมาท์ การเรียกใช้คำสั่ง รหัส
หรือ รหัส <ชื่อไฟล์>
จะส่งผลให้ รหัสข้อผิดพลาด.
/mnt/c/Users/kurti/AppData/Local/Programs/Microsoft VS Code/Code.exe: อาร์กิวเมนต์ไม่ถูกต้อง
ตัวอย่างบางส่วนที่กำลังทำงานอยู่
- เมื่อไดเร็กทอรีการทำงานไม่ได้เป็นส่วนหนึ่งของระบบไฟล์เซิร์ฟเวอร์ที่เมาท์
รหัส
หรือ รหัส <ไฟล์>
ทำงานได้ดี
- เมื่อไดเร็กทอรีทำงานไม่ได้เป็นส่วนหนึ่งของระบบไฟล์เซิร์ฟเวอร์ที่เมาท์ การใช้โค้ดไปยังเส้นทางแบบเต็มของไฟล์/ไดเร็กทอรีในระบบไฟล์เซิร์ฟเวอร์ เช่น
รหัส /home/k/smith_server
สามารถเปิดไฟล์ / ไดเร็กทอรีได้สำเร็จโดยไม่มีปัญหา
- เมื่อไดเร็กทอรีทำงานอยู่ภายในระบบไฟล์เซิร์ฟเวอร์ที่เมาท์
gedit <ไฟล์>
ทำงานได้ดี
- เมื่อไดเร็กทอรีทำงานอยู่ภายในระบบไฟล์เซิร์ฟเวอร์ที่เมาท์
รหัส $HOME
ยังได้รับข้อผิดพลาด
ข้อสรุปของฉันคือมีปัญหาเมื่อเรียกใช้คำสั่งรหัสเมื่ออยู่ในระบบไฟล์เซิร์ฟเวอร์ที่ติดตั้ง นอกจากนี้ สิ่งนี้จะไม่เกิดขึ้นเมื่อใช้ gedit อย่างไรก็ตาม เมื่ออยู่นอกระบบไฟล์เซิร์ฟเวอร์ที่เมาต์แล้ว ไฟล์ รหัส
สามารถเรียกใช้คำสั่งและเข้าถึงระบบไฟล์ที่เมาท์ได้โดยใช้พาธแบบเต็ม อาจมีบางอย่างเกิดขึ้นเมื่อติดตามไฟล์ Code.exe ซอฟต์แวร์ที่ใช้ Linux เช่น gedit ไม่ได้รับผลกระทบ แต่บางทีซอฟต์แวร์ที่ใช้ Windows เช่น Code.exe ที่เพิ่งถูกเชื่อมต่อจะได้รับผลกระทบหรือไม่