首页 > 解决方案 > 通过 WSL2 在 VSCODE 终端中的 $PATH 设置不正确

问题描述

我在我的 Windows 10 笔记本电脑上通过 WSL2 运行 Ubuntu-20.04。我已经开始在 VSCode 中遇到问题,集成终端没有正确初始化其 $PATH。

如果我通过 Windows 终端打开一个 Ubuntu shell 并运行,echo $PATH我会得到以下输出:

/home/<user>/bin:/home/<user>/.nvm/versions/node/v15.1.0/bin:/usr/lib/jvm/java-1.11.0-openjdk-amd64/bin:/opt/devkitpro/tools/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files/Common Files/Oracle/Java/javapath:/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/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/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static:/mnt/c/Program Files (x86)/AMD/ATI.ACE/Core-Static:/mnt/c/Program Files (x86)/Calibre2/:/mnt/c/Program Files/Calibre2/:/mnt/c/Program Files/PuTTY/:/mnt/c/Program Files/FileBot/:/mnt/c/Users/<User>/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/<User>/AppData/Local/Programs/Microsoft VS Code/bin:/snap/bin

但是,一旦通过 VSCode 连接到 WSL,如果我在集成终端中运行相同的命令,我会得到:

/home/<user>/.local/bin

这意味着我什至无法运行最基本的命令,例如ls.

我不明白为什么会这样?VSCode 中是否有一些设置会干扰我的 shell 初始化,从而阻止 $PATH 正确设置?我什至无法运行 env 来查看其他环境变量在做什么。

VSCode 中的默认 shell 设置为 bash。

据我了解,bash 读取/etc/profile设置 shell 变量的指令。这些指令没有被阅读有什么原因吗?

标签: shellvisual-studio-codeterminalpathwindows-subsystem-for-linux

解决方案


好的,所以我弄清楚了导致问题的原因。

在我的.bashrc中,我添加了以下行:

export `PATH="/home/<user>/.local/bin"`

大概是为了能够从任何目录访问位于那里的程序。无论出于何种原因,当从Windows Terminal启动 shell 时,这都不会导致问题,但是VS Code不喜欢它!.bashrc只需从解决问题中删除上述行。

猜猜我有很多东西要学习.bashrc.bash_profile等等,以及在启动 bash shell 时如何访问它们。如果有人想阐明这一点,请随时在下面发表评论。


推荐阅读