Tôi có linh cảm rằng điều này là do thứ gì đó trong tập lệnh hoặc tệp khởi động của bạn gây ra (giả sử ~/.bashrc
hoặc ~/.profile
) không trích dẫn đúng CON ĐƯỜNG
Biến đổi. Vì WSL tự động nối đường dẫn Windows vào đường dẫn WSL, nên nó thêm một số thành phần đường dẫn có "Tệp chương trình", điều này là chính xác.
Nhưng nó yêu cầu trích dẫn biến thích hợp. Kiểm tra tập lệnh của bạn để sử dụng $PATH
và trích dẫn nó (hoặc thêm các dòng có khả năng vi phạm vào câu hỏi của bạn nếu bạn cần trợ giúp về điều đó). Nếu bạn không thấy bất kỳ điều gì đáng ngờ trong tập lệnh, thì hãy kiểm tra lại ~/.bashrc
và ~/.profile
.
Chỉnh sửa/cập nhật: Tôi khá chắc chắn rằng dòng vi phạm sẽ nằm trong tập lệnh đang được xử lý thông qua dấu gạch ngang
(I E. sh
). Bash có thể xử lý tốt việc này mà không cần trích dẫn thêm:
> xuất PATH=$PATH:newpath
> tiếng vang $?
0
> tiếng vang $PATH
> # xuất ra ĐƯỜNG đúng, ngay cả với khoảng trắng trong đường dẫn Windows
Tuy nhiên, chạy sh
và thử tương tự:
$ xuất PATH=$PATH:đường dẫn mới
sh: 1: xuất: Tệp/NVIDIA: tên biến không hợp lệ
$ xuất PATH="$PATH":đường dẫn mới
$ tiếng vang $?
0
$ tiếng vang $PATH
# xuất ra ĐƯỜNG đúng, ngay cả với khoảng trắng trong đường dẫn Windows
Ngoài ra còn có một giải pháp "băng tần" để tắt tính năng WSL nối thêm đường dẫn Windows vào đường dẫn WSL/Linux. Bạn có thể làm điều này bằng cách tạo (hoặc chỉnh sửa nếu nó đã tồn tại) /etc/wsl.conf
và thêm các dòng sau:
[tương tác]
appendWindowsPath=false
Sau đó dừng ví dụ với wsl --chấm dứt Ubuntu
(giả sử tên phân phối mặc định) và khởi động lại WSL.
Nó không phải là một tốt giải pháp lâu dài, IMHO, vì việc chạy các ứng dụng Windows (chẳng hạn như VSCode) trở nên khó khăn hơn nhiều khi chúng không nằm trong đường dẫn.
Tốt hơn là tìm ra vấn đề cốt lõi và khắc phục nó trong tập lệnh.