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

15

我想在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"
        }
      },
    ]
  }

1
我也遇到了同样的问题,但是没有任何答案可以解决这个问题。 已经在 https://github.com/microsoft/vscode/issues/143061 上报告了一个 bug。 - Vikrant
5个回答

23

5

你可能还需要添加一个自动化配置文件

  "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在执行args时不会考虑-l标志。因此,你可以将其与path一起使用。

如果你的设置中没有terminal.integrated.profiles.osx,你可以从默认设置中复制它(打开命令面板并搜索“default settings”)。

我自己没有这样做,但你可以通过将terminal.integrated.defaultProfile.osx设置为zsh,确保zsh是VScode的默认终端配置文件。


我的终端正常工作,但不幸的是这并没有解决问题。 - Alex McLean

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

还要从命令面板中检查您的shell的默认配置文件(Terminal: Select Default Profile),并确保将其设置为zsh -l...使用-c参数(非登录非交互式)将防止执行~/.zshrc,这似乎是由于您的错误输出所导致的。

最后,请确认您的配置文件位于正确的位置(~/.zshrc),并且nvm和yarn的PATH都已导出。或者,如果您正在尝试引用本地的yarn(如果由于某种原因您只安装了它本地),则需要通过npx运行yarn...


1
我的默认 shell 在集成终端中可以正常工作。唯一的问题是当我尝试从 VSCode 任务自动运行 shell 时。 - Alex McLean

2
macOS 12.6.1 | vscode 1.74.0
由于这些都没有起作用,所以我无法完成任何操作,因此我已经删除了警告...
"terminal.integrated.showExitAlert": false

或者通过图形用户界面 在此输入图片描述

我希望这不会被扣分...


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