J'ai installé le sous-système Windows pour Linux et activé sous Windows Activer les fonctions OFF OFF. Puis redémarré mon PC. J'avais choisi CMD après avoir redémarré le PC en tapant "WSL" et cela fonctionne. Mais quand j'exécute mon script de son dossier qui a la commande "wsl -e xxx.sh", j'ai une erreur
'WSL' n'est pas reconnu comme une commande interne ou externe, programme opérable ou fichier batch.
Pourriez-vous m'aider avec cela s'il vous plaît? Merci.
mon PC est en cours d'exécution OS: Windows 10 Pro; Microsoft Windows version: 1903; OS Build: 18362.418
La raison la plus courante pour laquelle une commande qui exécute un programme exécutable fonctionne sur la ligne de commande, mais pas dans un script de lot, est que, dans le script, avant la ligne contenant la commande Problème, l'utilisateur a créé une variable% de chemin%%. . Cela peut sembler un nom pratique pour une variable qui contient, bien, a chemin. Le problème est que ce nom de variable est utilisé par Windows pour contenir une liste de dossiers séparées par semi-colonne qui est recherchée lorsqu'un exécutable est appelé. C'est une variable système . Si vous l'avez redéfini, tous les exécutables (par exemple ,.exe, .bat, .vbs, etc.) que Windows utilise, ne sera pas trouvé, et le script échouera avec exactement ce message, où XXX est le programme ou le fichier attendu:
'xxx' is not recognized as an internal or external command, operable program or batch file.
Cela peut être déroutant parce que les commandes qui sont interne à l'environnement CMD (dir, CLS, ensemble, copie, déplacement, etc.) (liste ICI ) continue de continuer à fonctionner dans cette situation.
Vous pouvez déboguer un script où cela est suspecté en insérant la commande path
immédiatement avant une ligne de problème. La variable de chemin de Windows commence avec ces dossiers et peut être étendue à mesure que les programmes sont installés:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
Problème courant Lorsque vous essayez d'accéder à des outils de 64 bits à partir de processus 32 bits. wsl.exe
est dans System32
. Mais si votre script est exécuté comme un processus de 32 bits, tous les accès à System32
sont redirigés vers SysWOW64
. Afin d'accéder à wsl.exe
dans le "vrai" System32
Dossier, vous devrez utiliser Sysnative
plutôt, comme dans C:\Windows\Sysnative\wsl.exe
.
Cette erreur est couverte dans la section "Installation de dépannage" du Guide d'installation WSL :
Le terme "WSL" n'est pas reconnu comme nom d'une cmdlet, d'une fonction, d'un fichier de script ou d'un programme opérable.
Assurez-vous que le sous-système Windows pour le composant facultatif Linux est installé. De plus, si vous utilisez un périphérique ARM64 et exécutant cette commande de PowerShell, vous recevrez cette erreur. Courez plutôt Wsl.exe de PowerShell Core ou Invite de commande.