Am bănuiala că acest lucru este cauzat de ceva din scriptul sau fișierele de pornire (presupunând ~/.bashrc
sau ~/.profil
) care nu citează corect CALE
variabil. Deoarece WSL adaugă calea Windows la calea WSL în mod automat, adaugă câteva elemente de cale cu „Fișiere de program”, ceea ce este corect.
Dar necesită o cotare variabilă adecvată. Verificați scriptul pentru a utiliza $PATH
și citați-l (sau adăugați rândurile potențial ofensatoare la întrebarea dvs. dacă aveți nevoie de ajutor cu asta). Dacă nu vedeți nimic suspect în script, verificați și dvs ~/.bashrc
și ~/.profil
.
Editați/actualizați: Sunt destul de sigur că linia ofensătoare va fi în scriptul care este procesat liniuță
(adică SH
). Bash se poate descurca bine fără citate suplimentare:
> export PATH=$PATH:newpath
> echo $?
0
> echo $PATH
> # iese PATH corect, chiar și cu spații în calea Windows
Totuși, fugi SH
si incearca la fel:
$ export PATH=$PATH:newpath
sh: 1: export: Fișiere/NVIDIA: nume de variabilă greșit
$ export PATH="$PATH":nouă cale
$ echo $?
0
$ echo $PATH
# afișează PATH corect, chiar și cu spații în calea Windows
Există, de asemenea, o soluție „bandaid” pentru a dezactiva caracteristica WSL care adaugă calea Windows la calea WSL/Linux. Puteți face acest lucru creând (sau editând dacă există deja) /etc/wsl.conf
și adăugând următoarele rânduri:
[interoperabilitate]
appendWindowsPath=false
Apoi opriți instanța cu wsl --terminate Ubuntu
(presupunând numele distribuției implicite) și reporniți WSL.
Nu este o bun soluție permanentă, IMHO, deoarece face mult mai dificilă rularea aplicațiilor Windows (cum ar fi VSCode) atunci când acestea nu sunt în cale.
Mai bine să vă dați seama de problema principală și să o remediați în scripturi.