如何在 WSL2 中的终端中启动不同发行版的 VS Code?

如何在 WSL2 中的终端中启动不同发行版的 VS Code?

我最近设置了一个名为 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 --norccode .这样可​​以吗?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)。

相关内容