我正在尝试在 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"]
}
},
{
"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"
}
},
]
}
这对我有用*:
"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"
您可能还需要添加自动化配置文件
"terminal.integrated.profiles.osx": {
"zsh": {
"path": "/bin/zsh -l",
"args": ["-l"]
}
},
"terminal.integrated.automationProfile.osx": {
"path": "/bin/zsh"
}
尝试将其添加到您的
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 的默认终端配置文件
尝试从 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 运行纱线...