VSCode 终端任务不使用 zsh 配置文件

问题描述 投票:0回答:5

我正在尝试在 VSCode 中的窗口加载上运行任务,其中打开终端并且默认运行

nvm use && yarn dev
。但是,运行此 shell 任务似乎不会加载我的 zsh 配置文件。

我运行任务得到的输出是:

The terminal process "zsh '-c', 'nvm use && yarn dev'" terminated with exit code: 127.

Terminal will be reused by tasks, press any key to close it.

但是,如果我随后手动启动一个新终端并运行相同的命令(即:按加号,打开一个新的集成终端),它将按预期工作。

怀疑 VSCode 由于某种原因没有加载我的个人资料,我尝试将以下内容添加到我的任务中,结果导致错误

/bin/zsh: can't open input file: nvm use && yarn dev The terminal process "zsh '-l', 'nvm use && yarn dev'" terminated with exit code: 127.

// in dev task
"options": {
  "shell": {
    "executable": "zsh",
    "args": ["-l"]
  }
},

.vscode/tasks.json

{
    "version": "2.0.0",
    "presentation": {
      "echo": false,
      "reveal": "always",
      "focus": false,
      "panel": "dedicated",
      "showReuseMessage": true
    },
    "tasks": [
      {
        "label": "Create terminals",
        "dependsOn": [
          "Dev",
        ],
        // Mark as the default build task so cmd/ctrl+shift+b will create them
        "group": {
          "kind": "build",
          "isDefault": true
        },
        // Try start the task on folder open
        "runOptions": {
          "runOn": "folderOpen"
        }
      },
      {
        "label": "Dev",
        "type": "shell",
        "command": 
          ["nvm use && yarn dev"],
        "isBackground": true,
        "problemMatcher": [],
        "presentation": {
          "group": "dev-group"
        }
      },
    ]
  }
visual-studio-code zsh nvm
5个回答
24
投票

这对我有用*:

"terminal.integrated.profiles.osx": {
    "zsh": {
        "path": "/bin/zsh",
        "args": ["-l", "-i"]
    }
},

*(添加到您的

settings.json

github.com/microsoft/vscode/issues/143061

更新- 对于默认 shell,提供以下设置 -

"terminal.integrated.defaultProfile.osx": "zsh"

6
投票

您可能还需要添加自动化配置文件

  "terminal.integrated.profiles.osx": {
    "zsh": {
      "path": "/bin/zsh -l",
      "args": ["-l"]
    }
  },
  "terminal.integrated.automationProfile.osx": {
    "path": "/bin/zsh"
  }

4
投票

尝试将其添加到您的

settings.json

  "terminal.integrated.profiles.osx": {
        [...]
        "zsh": {
            "path": "/bin/zsh -l",
            "args": [
                "-l"
            ]
        },
        [...]
  },

请注意,重要的部分是

    "path": "/bin/zsh -l",

我遇到了同样的问题,我发现由于某种原因 VScode 没有考虑传入

-l
中传递的
args
标志。所以您可以将其包含在
path
中。

如果您的设置中没有

terminal.integrated.profiles.osx
,您可以从默认设置中复制它(打开命令面板并搜索“默认设置”)。

我不需要这样做,但您可以通过将

terminal.integrated.defaultProfile.osx
设置为
zsh

来确保 zsh 是 VScode 的默认终端配置文件

2
投票

尝试从 VSCode 的集成终端运行

echo $SHELL
。如果您使用的是 Mac 或 Linux 计算机,则可以将该输出与终端应用程序(VSCode 外部)的输出进行比较。 VSCode 中的默认 shell 可能设置不正确,或者在其他位置使用了 zsh 的副本。如果是这样,请通过命令面板设置 VSCode 的默认 shell (
Terminal: Select Default Shell
)。

还要从命令面板检查 shell 的默认配置文件 (

Terminal: Select Default Profile
),并确保将其设置为
zsh -l
...使用
-c
参数(非登录非交互式)将防止
~/.zshrc
被已执行,根据您的错误输出,这听起来像是这里发生的情况。

最后,确认您的配置文件位置正确(位于

~/.zshrc
)并且 nvm 和纱线
PATH
均已导出。或者,如果您尝试在本地引用纱线(如果由于某种原因您只在本地安装了它),则需要通过 npx 运行纱线...


2
投票

通过 GUI 您可以执行以下操作

command
+
,
并搜索
terminal.integrated.showExitAlert
,然后取消选择厚,如下所示 >

我希望不会在这里得到负分...

© www.soinside.com 2019 - 2024. All rights reserved.