我最近设置了一个名为 Ubuntu-20.04-copy01 的 Ubuntu-20.04 WSL2 的工作副本,但我无法从终端使用 vscode 打开/创建文件,例如:code main.rs
与原始发行版一样。
echo $PATH 的输出:
/home/rogelio/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
同一命令的原始发行版输出是
/home/rogelio/anaconda3/bin:/home/rogelio/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Users/rogel/AppData/Local/Microsoft/WindowsApps:/mnt/c/用户/rogel/应用程序数据/本地/程序/Microsoft VS Code/bin:/快照/箱
如果我配置我的 ubuntu 副本的 .bashrc 文件以添加 /mnt/c/Users/rogel/AppData/Local/Programs/Microsoft VS Code/bin 是否足够?
我不确定这是否会引起冲突。
我还使用 更改了 wsl 使用的默认发行版wsl --setdefault Ubuntu-20.04-copy01
。
谢谢!
答案1
默认情况下,启动实例时运行的 WSLinit
进程应该将 Windows 路径附加到 Linux $PATH
。 似乎 (a) 由于某种原因没有发生这种情况,或者 (b) 启动文件中的某些内容在事后对其进行了修改。
需要检查以下几件事:
首先,尝试通过 启动该实例
wsl -d Ubuntu-20.04-copy01 -e bash --noprofile --norc
。code .
这样可以吗?echo $PATH
看起来与以前不同吗?如果是这样,那么启动文件中的某些内容就是问题所在。查找~/.bashrc
或中~/.bash_profile
可能正在修改 的任何内容(或任何其他启动文件或引用文件)$PATH
。如果不是这样,则使用以下设置创建或修改
/etc/wsl.conf
(使用):sudo
[Interop] appendWindowsPath=true
这应该是默认设置,但如果将其设置为 false,则可能会导致问题。无论如何,我们还是强制这样做以
true
确保万无一失。您需要关闭实例并重新启动才能使其生效,因此:
- 退出所有正在运行的 shell
- 从 PowerShell 或 CMD:
wsl --terminate Ubuntu-20.04-copy01
- 重新启动并检查您的 $PATH 然后重
code .
试
回答你的后续问题,是的,你可以手动将文件附加...VSCode/bin
到$PATH
启动文件中,但我个人建议修复核心问题。能够轻松运行 Windows 应用程序开辟了很多可能性。例如,您可以通过powershell.exe
(例如powershell.exe get-childitem HKCU:
)运行 PowerShell 命令。您甚至可以wsl.exe
从之内WSL 使用 root 级命令需要 sudo 密码(例如wsl.exe -u root service cron start
)。