我使用 VSCode 和远程 SSH 扩展来 ssh 到我的 Linux 服务器。服务器上的默认 shell 是
bash
,我想将其更改为 zsh
。我安装了 zsh
并使用 chsh -s $(which zsh)
更改了默认 shell。令我惊讶的是,当我打开集成终端时,我又进入了bash
。我发现我需要将默认终端配置文件更改为 zsh
,因此我将设置 "terminal.integrated.defaultProfile.linux": "zsh"
添加到我的远程设置中。然后,一个新的终端如我所愿生成了zsh
,但我遇到了另一个问题。
当我运行 echo $SHELL
时,我得到了 /bin/bash
而不是 zsh
:
这是一个问题,因为我有一个自定义函数,它使用
exec $SHELL
在子 shell 中创建自定义环境。因此,运行这个函数会给我一个 bash
的子 shell,即使我是从 zsh
调用命令的。
我知道这是 VSCode 的问题,而不是我的服务器配置的问题,因为如果我使用常规终端或任何其他 ssh 客户端 ssh 进入服务器,则
$SHELL
的值是 zsh
,因为它应该是:
我搜索了 VSCode 的设置,找不到任何可以帮助我的东西,特别是因为默认终端配置文件已经设置为
zsh
,所以我不知道我错过了什么。
您需要在settings.json中添加此内容:
"terminal.integrated.profiles.linux": {
"zsh": {
"path": "/bin/zsh"
}
},