【问题标题】:Set global $PATH environment variable in VS Code在 VS Code 中设置全局 $PATH 环境变量
【发布时间】:2017-05-15 15:44:36
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 下面的答案都是过时的。 VSCode 现在检查 $SHELL 的值,并在启动之前确实运行了相应的启动文件(.bash_profile.zshrcconfig.fish 等),因此它确实看到了您在其中之一中设置的 PATH那些文件。
  • 嗯,我的 $SHELL/usr/local/bin/bash,我正在运行最新的 VSCODE,但据我所知,它没有运行 .bash_profile

标签: visual-studio-code


【解决方案1】:

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

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

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

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


至于在 VS Code 中 everwhere 提供 $PATH,这样它就会 由调用二进制文件的扩展程序使用,到目前为止我发现的唯一解决方法是:

  1. 配置您的 shell(默认为 bash)以获得您想要的 $PATH。例如,我的~/.bash_profile 有以下行:

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

  3. 退出 VS 代码。

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

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

【讨论】:

  • 上面的json sn-p应该去哪里?
  • @IceFire 使用“首选项:打开设置 (JSON)”命令编辑 settings.json。我已更新我的答案以包含此内容。
  • 所以这是我在 Debian 上的问题,如果我在 ssh 进入服务器时检查我的 PATH,我可以看到 VSCODE 已神奇地将自身添加到 PATH 但无法弄清楚它已添加到系统的位置没有找到它。另外我怎样才能看到 VSC 认为我的 PATH 是什么?
  • 在 Windows 集成 shell 或外部 powershell 上查看您的路径,键入 $ENV:Path
  • 新的 conf 是如何考虑的?我们必须手动重新加载吗?
【解决方案2】:

这比上面建议的答案更容易解决。

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

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

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

【讨论】:

  • 这对我有用,我必须重新启动整个 vs 代码,然后才能获取更新。
  • PowerShell 在此更改之前已经在终端中启动,但只有在所有用户特定的环境变量(不仅是 PATH)都可用之后。
【解决方案3】:

在:

> Preferences: Open Settings (JSON)

添加到 JSON 文件:

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

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

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

【讨论】:

    【解决方案4】:

    我在 macos 上使用 vscode 与 CMake 一起进行 C/C++ 开发。

    vscode 扩展CMake 工具 允许通过配置属性cmake.configureEnvironmentcmake.buildEnvironmentcmake.environment 操作环境变量(分别作用于 CMake 配置阶段、构建阶段和两者 - see docs)。

    然后您可以通过将以下 sn-p 添加到您的用户或项目 settings.json 来使用自定义路径扩展您的系统 PATH:

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

    【讨论】:

    • 如果我想要一个环境变量列表怎么办?
    • @elvis.dukay 如果您想定义其他环境变量,您可以将它们作为逗号分隔列表添加到那里:“PATH”:“...”,“ANOTHER_VAR”:“value”
    • 值得注意的是,该变量区分大小写。例如:env.PATH 和 Env.Path 不一样。
    【解决方案5】:

    由于这是“VS Code path”变体的顶级 Google 搜索结果,我将在此处添加我的答案。

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

    最后,在 ~/.zshenv 中放置正确的 PATH 是有效的。这是因为 .zshenv 是唯一一个从 VS Code 内部获取非交互式 shell 命令执行的文件(更详细的解释在这里 https://unix.stackexchange.com/questions/71253/what-should-shouldnt-go-in-zshenv-zshrc-zlogin-zprofile-zlogout

    【讨论】:

      【解决方案6】:

      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 文件将在系统范围内处理。由于大多数系统都是单用户的,因此对于大多数开发人员来说这应该不是问题。

      【讨论】:

      • 在 macOS 中,有一个文件 /etc/paths,其中包含路径,然后是一个文件夹 /etc/paths.d,其中包含由其他应用程序创建的路径(例如,我有一个来自安装 TeX 的路径)
      • 创建文件 /etc/paths.d/Code/etc/paths.d/$USER 包含 /usr/local/bin 对我没有任何影响。
      • 如果我弄错了,请纠正我,但我相信这个修复只适用于 MacOS。
      • 是的,此修改仅适用于 macOS。
      【解决方案7】:

      从 VS Code v1.63.2 开始,您可以继续使用 Ctrl + Shift + P,然后键入 Open Settings (JSON),只需添加以下行。

      "terminal.integrated.inheritEnv": true
      

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

      【讨论】:

        【解决方案8】:

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

        【讨论】:

        • 可以确认最可靠的方式
        【解决方案9】:

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

        所以,为了解决这个问题,我从 ubuntu 软件中卸载了默认版本并使用以下说明手动安装:

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

        它对我有用。

        【讨论】:

        • 这个问题已经有了高质量的答案。您的答案试图提供什么?如果您只是想分享链接,可以安全地作为评论。
        【解决方案10】:

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

        通常 $SHELL 是类 Unix 系统上的主要 shell,因此您 可能不想改变外壳。您可以将参数传递给 启动时的shell。

        例如,启用 bash 作为登录 shell(运行 .bash_profile),传入-l 参数(带双引号):

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

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

        不过,看起来该设置是我当前 VS Code (OS X) 设置的默认设置。集成终端正在运行我的 ~/.bash_profile 而无需对配置进行任何更改。或许可以尝试添加echo Executing .bash_profile... 以测试在代码中打开新终端时它是否正在运行。

        【讨论】:

        • 我认为只有在运行 shell 时才会运行 ~/.bash_profile。我也想在 shell 之外更改 $PATH,以便扩展能够调用外部二进制文件。
        【解决方案11】:

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

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

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

        #!/bin/bash
        set -Eeuxo pipefail
        
        proj_path=$( cd $( dirname ${BASH_SOURCE[0]} ) && pwd )
        launchctl setenv PATH $proj_path/bin:${PATH:-}
        

        【讨论】:

          【解决方案12】:

          对我来说,这是通过编辑 .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。并且应该修复桌面环境中的快捷方式。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-04-28
            • 2017-12-31
            • 1970-01-01
            • 2019-06-30
            • 2015-12-07
            • 2016-11-29
            相关资源
            最近更新 更多