Điểm:1

Không thể mở mã phòng thu trực quan khi bên trong ổ đĩa được gắn sshfs UBUNTU WSL

lá cờ ru

Tôi gặp sự cố khi mở mã phòng thu trực quan.

Tình huống là tôi có một hệ thống tệp máy chủ được gắn trong máy tính cục bộ của mình (UBUNTU WSL) bằng SSHFS.

Trong trường hợp bình thường, tôi có thể mở tệp bằng mã phòng thu trực quan bằng lệnh mã <tên tệp>.
Tuy nhiên, khi tôi ở trong thư mục hệ thống tệp của máy chủ và tôi cố gắng sử dụng lệnh này thì tôi gặp lỗi

/mnt/c/Users/kurti/AppData/Local/Programs/Microsoft VS Code/Code.exe: Đối số không hợp lệ

Đáng ngạc nhiên là tôi có thể sử dụng gedit theo cách tương tự mà không gặp vấn đề gì, ví dụ: gedit <tên tệp>.

Sau đó, điều kỳ lạ là tôi có thể sử dụng mã để mở tệp/thư mục trong hệ thống tệp máy chủ khi tôi là bất kỳ thư mục nào trong hệ thống tệp cục bộ của mình. Với điều này, tôi có thể dễ dàng mở tệp máy chủ bằng cách sử dụng mã </đầy đủ/đường dẫn/đến/tệp>.

Đây có phải là lỗi có thể xảy ra trong mã phòng thu trực quan hoặc sự cố với hệ thống của tôi không?

Chỉnh sửa: Tôi đã tạo một công việc mới xung quanh chức năng/lệnh đó là
tên lệnh: vcode

#!/bin/bash
fpath=$(realpath $1)
(cd $HOME; mã fpath)

Cập nhật: Tôi đã báo cáo nó trong trang github của WSL là một vấn đề https://github.com/microsoft/WSL/issues/7890

Chi tiết cụ thể hơn như sau

các bước repo

Trong thiết bị đầu cuối WSL,

  1. Gắn hệ thống tệp máy chủ bằng sshfs (trong trường hợp của tôi, đó là siêu máy tính của trường đại học)
    sshfs -C <server_name_and_ip> <mount_location>
    mount_location được chỉ định là một thư mục trống có tên smith_server với đường dẫn /home/k/smith_server/
  2. Chuyển đến thư mục cd /home/k/smith_server
  3. Mở thư mục trong mã phòng thu trực quan mã số .

hành vi dự kiến

Hành vi dự kiến ​​là studio trực quan sẽ mở thư mục/tệp bất kể thư mục làm việc hiện tại.

hành vi thực tế

Hành vi thực tế là khi thư mục làm việc hiện tại nằm trong hệ thống tệp máy chủ được gắn kết, hãy khởi chạy lệnh mã số . hoặc mã <tên tệp> sẽ dẫn đến mã lỗi.

/mnt/c/Users/kurti/AppData/Local/Programs/Microsoft VS Code/Code.exe: Đối số không hợp lệ

Một số ví dụ đang hoạt động,

  1. Khi thư mục làm việc không phải là một phần của hệ thống tệp máy chủ được gắn kết, mã số . hoặc mã <tệp> hoạt động tốt.
  2. Khi thư mục làm việc không phải là một phần của hệ thống tệp máy chủ được gắn kết, sử dụng mã tới đường dẫn đầy đủ của tệp/thư mục trong hệ thống tệp máy chủ, ví dụ:. mã /home/k/smith_server có thể mở thành công tệp/thư mục mà không gặp sự cố.
  3. Khi thư mục làm việc nằm trong hệ thống tệp máy chủ được gắn kết, gedit <tập tin> hoạt động tốt
  4. Khi thư mục làm việc nằm trong hệ thống tệp máy chủ được gắn kết, mã $HOME cũng nhận được một lỗi.

Kết luận cuối cùng của tôi là có vấn đề khi gọi lệnh mã khi bên trong hệ thống tệp máy chủ được gắn kết. Ngoài ra, điều này không xảy ra khi sử dụng gedit. Tuy nhiên, khi ở bên ngoài hệ thống tệp máy chủ được gắn kết, mã số lệnh có thể được gọi và cũng có thể truy cập hệ thống tệp được gắn kết bằng cách sử dụng đường dẫn đầy đủ. Có lẽ điều gì đó đang xảy ra khi truy tìm tệp Code.exe. Phần mềm dựa trên Linux như gedit không bị ảnh hưởng nhưng có lẽ phần mềm dựa trên Windows như Code.exe, mới được giao tiếp có bị ảnh hưởng không?

cocomac avatar
lá cờ cn
Đây có thể là một lỗi với cách VS Code hoạt động trong WSL. Tôi khuyên bạn nên [gửi vấn đề về GitHub](https://github.com/microsoft/WSL/issues/new?assignees=&labels=&template=Bug_Report.yaml) để báo cáo vấn đề này.
NotTheDr01ds avatar
lá cờ vn
Tôi sẽ cố gắng thử điều này trên hệ thống của mình sau ngày hôm nay. Thật tốt khi thấy bạn ít nhất có một cách giải quyết.
lá cờ ru
@cocomac Cảm ơn lời đề nghị. Tôi đã gửi báo cáo trên github.
lá cờ ru
@NotTheDr01ds Cảm ơn, bạn có thể xem các bước cụ thể hơn trong bản cập nhật hoặc trong vấn đề tôi đã gửi trong github
Điểm:2
lá cờ vn

Tôi đã có thể tái tạo điều này khá dễ dàng.

Dung dịch:

  • Tháo giá treo cầu chì hiện có:

    fusermount -u /home/k/smith_server
    
  • Chỉnh sửa /etc/fuse.conf như gốc:

    sudo -e /etc/fuse.conf
    
  • Bỏ ghi chú user_allow_other Tùy chọn

  • Kể lại với allow_root Tùy chọn:

    sshfs -o allow_root [user@]<remote_server>:/path /home/k/smith_server
    

Thêm chi tiết:

Lưu ý rằng đây không chỉ là vấn đề với sshfs. Bạn sẽ gặp phải nó khi khởi chạy VSCode từ bên trong không tí nào cầu chì-dựa trên điểm gắn kết.

tôi thành thật không hoàn toàn chắc chắn về nguyên nhân gốc rễ ở đây, nhưng ...

Bạn sẽ nhận thấy rằng, nếu không có giải pháp trên, nếu bạn cố duyệt đến \wsl$\Ubuntu\home\k\smith_server\, bạn sẽ không thể vào thư mục đó. Bạn sẽ có quyền truy cập vào thư mục chính của mình, nhưng bạn sẽ không thể truy cập smith_server.

Điều đó cho tôi biết rằng mặc dù Windows/WSL thực thi quyền đối với của bạn người dùng khi duyệt (theo mặc định, trừ khi bạn ghi đè lên điều này trong /etc/wsl.conf), có vẻ như nó vẫn đang làm như vậy nguồn gốc trong nền.

Vì vậy, khi chúng tôi tìm ra điều này, không có gì ngạc nhiên khi VSCode không thể xử lý việc khởi chạy từ một thư mục không tồn tại đối với nó.

Cái này làm khi bạn khởi động nó từ $HOME vì VSCode khởi tạo, sau đó chuyển sang tiện ích mở rộng "Từ xa - WSL", tiện ích này giao tiếp với máy chủ VSCode đã được cài đặt trong phiên bản WSL của bạn (trong ~/.vscode-máy chủ). Khi điều đó xảy ra, nó sẽ truy cập vào hệ thống tệp được gắn cầu chì dưới dạng của bạn người dùng và mọi thứ đều hạnh phúc.

Mỗi người đàn ông cầu chì:

Không người dùng nào khác (kể cả root) có thể truy cập nội dung của hệ thống tệp được gắn kết.

Tuy nhiên, có tùy chọn để ghi đè điều này bằng một trong hai -o allow_other hoặc -o allow_root. Và để kích hoạt một trong hai điều này, đã nói ở trên /etc/fuse.conf tùy chọn cần phải được thiết lập một cách thích hợp.

Sau đó, VSCode có quyền truy cập thích hợp vào thư mục khi khởi chạy.

Bạn cũng sẽ thấy rằng bây giờ bạn có thể duyệt qua Windows để \wsl$\Ubuntu\home\k\smith_server\.

lá cờ ru
Cảm ơn bạn rất nhiều vì những nỗ lực. Nó thực sự đã giúp!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.