wsl' 不被识别为内部或外部命令

ana*_*d s 5 linux command-line windows-10 windows-subsystem-for-linux

我安装了适用于 Linux 的 Windows 子系统,并在 Windows 下打开了关闭功能。然后重新启动我的电脑。通过键入“wsl”重新启动PC后,我确实检查了cmd并且它可以工作。但是,当我从其包含命令“wsl -e xxx.sh”的文件夹中运行我的脚本时,出现错误

'wsl' 不是内部或外部命令,也不是可运行的程序或批处理文件。

你们能帮我吗?谢谢你。

我的电脑在 操作系统上运行:Windows 10 Pro;微软视窗版本:1903;操作系统版本:18362.418

小智 6

尝试从 32 位进程访问 64 位工具时的常见问题。wsl.exeSystem32. 但是,如果您的脚本恰好作为 32 位进程运行,则所有System32SysWOW64. 为了wsl.exe在“真实”System32文件夹中访问,您必须Sysnative改用,例如在C:\Windows\Sysnative\wsl.exe.


小智 6

WSL 安装指南的“安装疑难解答”部分介绍了此错误:

术语“wsl”不被识别为 cmdlet、函数、脚本文件或可操作程序的名称。

确保安装了适用于 Linux 的 Windows 子系统可选组件。此外,如果您使用 ARM64 设备并从 PowerShell 运行此命令,您将收到此错误。而是从 PowerShell Core 或命令提示符运行 wsl.exe。

  • 这是唯一理智的响应,应该标记为已接受,当前接受的响应只不过是正在构建堆栈溢出配置文件的人的 quora 风格的胡言乱语。 (2认同)

Mic*_*vey 3

运行可执行程序的命令在命令行上工作但在批处理脚本中不起作用的最常见原因是,在脚本中,在包含问题命令的行之前,用户创建了一个变量 %path% 。对于保存路径的变量来说,这似乎是一个方便的名称。问题在于,Windows 使用此变量名称来保存以分号分隔的文件夹列表,在调用可执行文件时将搜索这些文件夹。它是一个系统变量。如果您重新定义了它,则将找不到 Windows 使用的所有可执行文件(例如 .exe、.bat、.vbs 等),并且脚本将失败并显示此消息,其中 xxx 是要执行的程序或文件预期的:

'xxx' is not recognized as an internal or external command, operable program or batch file.

这可能会令人困惑,因为cmd 环境内部的命令(dir、cls、set、copy、move 等)(此处列出)在这种情况下仍然可以继续工作。

path您可以通过在问题行之前插入命令来调试怀疑存在此问题的脚本。Windows 路径变量以这些文件夹开始,并且可能会随着程序的安装而扩展:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem