当我尝试从 WSL 执行代码时,如下所示:
cmd.exe
wsl code .
我收到以下错误:
/bin/bash: code: command not found
但是,如果我执行相同的命令但首先以管理员身份运行 cmd.exe,vscode 会按预期打开。
问题是为什么当我以非管理员身份运行时无法识别“代码”,我该如何解决?
附加信息:WSL2 版本 41959 vscode 版本 1.38 vscode 远程 WSL 扩展版本 0.39.5
当我尝试从 WSL 执行代码时,如下所示:
cmd.exe
wsl code .
我收到以下错误:
/bin/bash: code: command not found
但是,如果我执行相同的命令但首先以管理员身份运行 cmd.exe,vscode 会按预期打开。
问题是为什么当我以非管理员身份运行时无法识别“代码”,我该如何解决?
附加信息:WSL2 版本 41959 vscode 版本 1.38 vscode 远程 WSL 扩展版本 0.39.5
正如@Biswapriyo 提到的,这是一个开放的错误,WSL 无法访问 Windows C 驱动器。帮助我的解决方法是像这样重新启动 WSL:
wsl --shutdown
wsl
wsl --list --version
显示为 wsl 2
wsl
chmod u+x vscode_dir/code.exe
chmod u+x vscode_dir/bin/code
ln -s vscode_dir/bin/code code
mv code ~/.local/bin
.bashrc
,添加一行如下:export PATH="$HOME/.local/bin:$PATH"
source .bashrc
或重新启动终端。然后就可以愉快的在wsl2-ubuntu环境或者VSCode的终端玩代码了。
我的问题是我在运行后使用的是 root 用户sudo -i
。退出并在 WSL 上使用我的普通用户解决了该错误。
就我而言,我使用的是 Debian,并且 echo %PATH% 没有输出任何内容。
我使用了已解决的 github 问题中建议解决方案的第二部分
For Debian, /etc/profile contributed to this problem.
Here is the path definition in /etc/profile
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
选项1:
You can delete above lines, then wsl --shutdown to restart Debian.
选项 2:
If you would like to keep these lines, you can also append ":$PATH" to each path like below, then wsl --shutdown
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:$PATH"
fi
谢谢立川