在VS Code中设置全局$ PATH环境变量

Set global $PATH environment variable in VS Code

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

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

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

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

(我要全局设置它,而不是针对每个项目或每个任务设置它,因为我维护着很多小package。)


如果只需要在集成终端中设置$PATH,则可以使用VS Code的terminal.integrated.env.<platform>变量(在1.15版中添加)。按Cmd Shift P(或Ctrl Shift P)并搜索"首选项:打开设置(JSON)"。然后将以下条目添加到设置文件:

1
2
3
"terminal.integrated.env.osx": {
 "PATH":"...:/usr/bin:/bin:..."
}

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

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

关于$PATH在VS Code中随处可用,因此它将
由调用二进制文件的扩展程序使用,到目前为止,我发现的唯一解决方法是:

  • 配置外壳程序(默认为bash)以具有所需的$PATH。例如,我的~/.bash_profile具有以下行:

    1
    PATH="$PATH:$HOME/bin"
  • 在VS Code中,按a?§a?? P并键入install 'code' command(如果您以前没有这样做过)。

  • 退出VS代码。

  • 不是通过单击扩展坞或启动板中的图标来启动VS Code,而是通过打开Terminal.app并键入code。在您退出之前,新设置的路径将在VS Code中处于活动状态。

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


  • 我正在macOS上使用vscode与CMake一起进行C / C开发。

    vscode扩展CMake Tools允许通过配置属性cmake.configureEnvironmentcmake.buildEnvironmentcmake.environment(分别作用于CMake配置阶段,构建阶段和两者-参见文档)来操作环境变量。

    然后,您可以通过向用户或项目settings.json添加以下代码段,以自定义路径扩展系统PATH:

    1
    2
    3
    "cmake.environment": {
       "PATH":"~/.myTool/bin:${env:PATH}"
    },


    问题是Visual Studio代码。

    无论您如何在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文件将在系统范围内处理。由于大多数系统都是单用户的,因此对于大多数开发人员而言这不是问题。


    由于这是" VS代码路径"的变体形式在Google搜索中排名第一,因此我将在此处添加答案。

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

    最后,将正确的PATH放置在?/ .zshenv内是可行的。这是因为.zshenv是唯一从非交互式shell命令执行中获取的文件,例如从VS Code内部获取(此处有更详细的说明https://unix.stackexchange.com/questions/71253/what-should-shouldnt-go -in-zshenv-zshrc-zlogin-zprofile-zlogout)


    在我的案例中(Linux Mint 19.3 Cinnamon,通过snap安装VS代码)的窍门是将附加的PATH放入?/ .profile中。由于此文件是在用户会话开始时读取的,因此请不要忘记在编辑此文件后注销/登录或重新启动。


    我正在使用ubuntu 18.04。我有一个类似的问题,定义了我的环境变量,并且终端知道$ PATH,但是当我尝试使用golang进行调试时,在$ PATH变量中找不到go库。

    因此,要解决此问题,我从ubuntu软件中卸载了默认版本,并按照以下说明进行了手动安装:

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

    对我有用。


    在:

    1
    > Preferences: Open Settings (JSON)

    添加到JSON文件中:

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

    为了检查它是否正常工作,请在您的VS Code终端中执行:

    1
    2
    3
    4
    # For PowerShell
    echo $env:PATH
    # For bash
    echo"$PATH"

    将以下内容添加到您的?/ .bash_profile:

    1
    launchctl setenv PATH $HOME/.cargo/bin:$PATH:$HOME/bin

    或在需要时运行Bash脚本,例如:

    1
    2
    3
    4
    5
    #!/bin/bash
    set -Eeuxo pipefail

    proj_path=$( cd $( dirname ${BASH_SOURCE[0]} ) && pwd )
    launchctl setenv PATH $proj_path/bin:${PATH:-}

    获取代码以加载现有的?/ .bash_profile最好。我认为这里的文档是相关参考:
    https://code.visualstudio.com/docs/editor/integrated-terminal#_linux-os-x

    Typically $SHELL is your primary shell on Unix-like systems so you
    probably won't want to change the shell. You can pass arguments to the
    shell when it is launched.

    For example, to enable running bash as a login shell (which runs
    .bash_profile), pass in the -l argument (with double quotes):

    // Linux"terminal.integrated.shellArgs.linux": ["-l"]

    // OS X"terminal.integrated.shellArgs.osx": ["-l"]

    尽管如此,该设置似乎是我当前的VS Code(OS X)设置中的默认设置。集成终端正在运行我的?/ .bash_profile,而没有对配置进行任何更改。也许尝试添加echo Executing .bash_profile...来测试在Code中打开新终端时它是否正在运行。