如何在VS Code中全局设置PATH环境变量?

79

我正在我的~/.bash_profile(在Mac上)中定义一个自定义的$PATH环境变量,如下所示:

PATH="$HOME/.cargo/bin:$PATH:$HOME/bin"

然而,VS Code当然不会运行我的.bash_profile,因此它没有我的自定义路径。实际上,如果我切换开发者工具并检查process.env.PATH,它甚至似乎没有/usr/local/bin

如何在VS Code中全局设置PATH环境变量?

(我想全局设置它,而不是每个项目或每个任务,因为我正在维护许多小包。)


4
以下的回答都已经过时了。VSCode现在会检查$SHELL的值,并在启动之前实际运行相应的启动文件(.bash_profile.zshrcconfig.fish等),因此它确实会看到你在其中一个文件中设置的PATH - BallpointBen
1
嗯,我的 $SHELL/usr/local/bin/bash,我正在运行最新的 VSCODE,但据我所知它并没有运行 .bash_profile - Christopher King
13个回答

100
如果您只需要在集成终端中设置$PATH,您可以使用VS Code的terminal.integrated.env.<platform>变量(自1.15版本起添加)。按下Cmd+Shift+P(或Ctrl+Shift+P),然后搜索"Preferences: Open Settings (JSON)"。然后将以下条目添加到设置文件中:
"terminal.integrated.env.osx": {
  "PATH": "...:/usr/bin:/bin:..."
}

(根据需要将.osx替换为.linux.windows。)

要查看您系统的$PATH,请在Terminal.app中键入echo "$PATH",然后将其复制并粘贴到上面的设置片段中。


关于在VS Code中使$PATH任何地方都可用,以便被调用二进制文件的扩展使用,目前我找到的唯一解决方法是这样的:
  1. 配置您的shell以获得所需的$PATH。例如,我使用的是Bash,我的~/.bash_profile文件中有以下一行:

     PATH="$PATH:$HOME/bin"
    
  2. 在VS Code中,按下⇧⌘P并键入install 'code' command(如果您之前没有这样做)。

  3. 退出VS Code。

  4. 启动VS Code时,请不要点击Dock中的图标,而是打开Terminal.app并键入code。在您退出之前,新设置的路径将在VS Code中生效。

  5. 如果VS Code重新启动,例如由于升级,$PATH将重置为系统默认值。在这种情况下,请退出VS Code并通过键入code重新启动它。

更新:据称,现在VS Code在Mac和Linux上尝试通过点击图标来启动(而不是通过code命令),会自动解析Shell环境。它通过临时启动一个Shell并读取环境变量来实现这一点。不过我还没有测试过。


1
@IceFire 使用“首选项:打开设置(JSON)”命令来编辑settings.json文件。我已经更新了我的答案以包含此内容。 - Jo Liss
1
在Windows集成的Shell或外部PowerShell中查看您的路径,请键入$ENV:Path。 - vhamon
新的配置文件如何被考虑进去?我们需要手动重新加载吗? - vhamon
我的Windows路径中有空格。我不知道如何输入这些“路径”。 - David Pesetsky
我的终端不工作。我不知道为什么,但对我来说,这个变量被设置为“”。我将它设置为echo $PATH返回的值,我的终端又可以工作了。谢谢! - Patrick Da Silva
显示剩余4条评论

30

在:

> Preferences: Open Settings (JSON)

将其添加到 JSON 文件中:

"terminal.integrated.env.windows": {
    "PATH": "${env:PATH}"
},

-> 根据您的操作系统,terminal.integrated.env 应以 .osx.linux.windows 结尾。


为了检查它是否可用,请在您的 VS Code 终端中执行:

# For PowerShell
echo $env:PATH
# For bash
echo "$PATH"

3
你不会相信这个问题困扰我有多久了。感谢@holzkohlengrill。 - Eric McLachlan
1
这应该是最佳答案。当前最佳答案也帮了我很多,但我在Windows路径语法(反斜杠“\”)方面遇到了困难。在这里找到了完美的一行代码,谢谢! - ToddEmon
我需要一个双反斜杠:"PYTHONPATH": "${workspaceFolder};${workspaceFolder}\\src;${env:PYTHONPATH}" - tsbertalan

20
我在macOS上使用vscode进行C/C++开发,并与CMake配合使用。通过vscode扩展程序CMake Tools,可以通过配置属性cmake.configureEnvironment、cmake.buildEnvironment和cmake.environment来操作环境变量(分别作用于CMake配置阶段、构建阶段或两个阶段 - 请参阅文档)。
然后,您可以通过将以下代码片段添加到用户或项目的settings.json中来扩展系统PATH以包含自定义路径:
"cmake.environment": {
    "PATH": "~/.myTool/bin:${env:PATH}"
},

如果我想要一个环境变量列表怎么办? - Elvis Dukaj
1
@elvis.dukay 如果您想定义其他环境变量,您可以将它们作为逗号分隔列表添加在那里: “PATH”:“...”,“ANOTHER_VAR”:“value” - Paolo
值得注意的是,变量是区分大小写的。例如:env.PATH 和 Env.Path 不是相同的。 - matt.baker

10

因为这是“VS Code路径”变体的顶级谷歌搜索结果,所以我将在此添加我的答案。

我正在运行Linux,我的问题是VS Code找不到构建项目所需的某些可执行文件。我是从快速启动器(ALT + F2)而非终端中运行VS Code。我尝试在许多不同的地方修改PATH变量,但似乎无法正确设置。

最终,在~/.zshenv中放置正确的PATH才起作用。这是因为.zshenv是唯一为非交互式shell命令执行(如在VS Code内部执行)而获取源的文件(更详细的解释在此处https://unix.stackexchange.com/questions/71253/what-should-shouldnt-go-in-zshenv-zshrc-zlogin-zprofile-zlogout)。


1
这解决了我的问题!尽管在我的路径上有latexmk或任何其他构建工具,但latex workshop无法找到它们!这为我解决了问题。谢谢! - Ethan

9

Visual Studio Code是问题所在。

无论您如何在shell中设置PATH变量,都有时会出现Visual Studio Code不会继承您的PATH设置的情况。如果您正在使用类似LaunchBar的应用程序启动器启动Visual Studio Code,则不会继承您的PATH变量。

以下是一个系统范围的修复方法:

在/etc/paths.d目录中,创建一个文件,文件名为您的Unix用户名。在该文件中,放置Visual Studio Code运行所需的其他路径。在我的情况下,这是我/etc/paths.d文件的内容:

/usr/ucb /opt/local/bin /opt/local/sbin ~/go/bin

注意:您的/etc/paths.d文件将在整个系统范围内进行处理。由于大多数系统是单用户的,因此对于大多数开发人员来说,这不应该是问题。


3
在macOS中有一个名为/etc/paths的文件,其中包含路径信息,还有一个名为/etc/paths.d的文件夹,其中包含由其他应用程序创建的路径(例如,我安装TeX后就有一个这样的路径)。 - BallpointBen
创建文件/etc/paths.d/Code/etc/paths.d/$USER,包含/usr/local/bin对我没有任何影响。 - Klas Mellbourn
请纠正我如果我错了,但我相信这个修复只适用于MacOS。 - ljleb
1
是的,这个修改只适用于 macOS。 - russes
1
这是一个针对使用brew的m1基础mac的好提示。文件放在非标准位置,按照上述建议添加“/opt/homebrew/bin”可以修复一些问题。 - Vorsprung
我更喜欢使用 /opt/homebrew/bin。尽可能地,我会将 /usr/local/bin 留给第三方工具,如 VS Code 和 Sourcetree,以便为命令行工具添加附加功能。 - russes

6

修复这个问题比上面的答案还要简单。

打开VSCode设置(Ctrl + ,),搜索terminal.defaultProfile

我更新了我的终端>集成>默认配置文件:Windows

它默认设置为null。只要我将其更改为PowerShell并重新启动终端,它就可以获取我的系统的path变量了!


这对我有用,我不得不重新启动整个 VS Code,在它更新之前才能生效。 - nck
在这个更改之前,PowerShell已经在终端中启动了,但是只有在所有用户特定的环境变量(不仅仅是PATH)可用后才会启动。 - Dr.Dax

3
在我的情况下(Linux Mint 19.3 Cinnamon,通过Snap安装的VS Code),有效的方法是将追加的PATH放在~/.profile中。由于该文件在用户会话开始时读取,请不要忘记在编辑此文件后注销/登录或重新启动。

可以确认,最可靠的方法 - Luke Miles
修复了Linux(基于Debian的Mint)的问题,确实感谢! - Alexander Potemkin

1
从VS Code v1.63.2开始,您可以使用Ctrl + Shift + P,然后输入"打开设置(JSON)",然后简单地添加以下行。
"terminal.integrated.inheritEnv": true

在我的情况下,代码已经存在,但被设置为false。更改后,一切都正常了。


这个设置还存在吗?我在我的安装版本(1.78)中没有看到它。 - starball
刚刚更新到最新版本(1.78),是的,我仍然可以使用我的终端环境变量。如果您的设置中没有此选项,请尝试在用户设置(JSON)或默认设置(JSON)中添加以下行。实际上,我不记得更改过我的默认设置,但我发现以下行已经存在: // Whether new shells should inherit their environment from VS Code, which may source a login shell to ensure $PATH and other development variables are initialized. This has no effect on Windows. "terminal.integrated.inheritEnv": true, - Kaan Güven
啊,我的错。我看的是工作区的settings.json文件,而这个设置不能在每个工作区上进行配置——只能在用户的settings.json中进行配置。 - starball

0

对我来说,问题可以通过编辑 .desktop 文件来解决。

最初我的文件是这样的

Exec=/usr/bin/code-oss --unity-launch %F

只是改成了

Exec=zsh -c "source ~/.zshrc && /usr/bin/code-oss --unity-launch %F"

因为我使用的是zsh,而不是bash。但如果你在bash中遇到了同样的问题,只需将zsh替换为bash即可。然后你的桌面环境的快捷方式应该就可以正常工作了。


0
我正在使用Ubuntu 18.04。 我遇到了类似的问题,我的环境变量已经定义,终端也知道$PATH,但是当我尝试使用Golang进行调试时,Golang库在$PATH变量中未被找到。
为了解决这个问题,我通过以下步骤卸载了Ubuntu软件中的默认版本,并手动安装了它:

https://code.visualstudio.com/docs/setup/linux

它对我有效。


这个问题已经有了一个高质量的答案。你的回答想要提供什么?如果你只是想分享链接,那么可以放心地将其放在评论中。 - tod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接