我在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变量。有没有什么原因导致这些指令没有被阅读?
我知道是什么导致了这个问题。
在我的.bashrc
中,我添加了一行:
export `PATH="/home/<user>/.local/bin"`
可能能够从任何目录访问位于那里的程序。无论出于何种原因,当从Windows终端启动shell时,这都不会导致问题。VS Code不喜欢!只需从.bashrc
中删除上述行就解决了问题。
我想我有很多关于.bashrc
,.bash_profile
等,以及如何在启动bash shell时访问这些。如果有人想阐明这一点,请在下面发表评论。