即使将默认 shell 更改为 zsh 后,echo $SHELL 也会将“/bin/bash”显示为输出

Pal*_*gam 4 shell zsh

我参考了这个答案来更改我的默认 shell如何将默认 shell 更改为 ZSH - chsh 说“无效 shell”

添加 zsh/etc/shells并执行后,sudo chsh -s "$(command -v zsh)" "${USER}"我运行了echo $SHELL(顺便说一句,它没有输出,所以我认为它一定已经成功运行),它给了我/bin/bash

我关闭了 shell 并打开了一个新的 shell 会话,zsh 出现了,所以我认为它一定是通过重新启动来修复的,之后当我echo $SHELL在 zsh 会话中运行时,它仍然给了我相同的输出/bin/bash``$SHELL --version,也给了我 bash 版本而不是zsh 的一个

每次我执行 ctrl+alt+t 操作时,我都会得到一个 zsh 会话,但这个echo $SHELL输出让我感到怀疑。

更新:我正在运行 Ubuntu Budgie 18.04.3,我/bin/zshecho $0

Kus*_*nda 5

仅当您执行完全登录时才会设置环境SHELL变量,例如注销并再次登录,或者使用su - "$USER"ssh "$USER@localhost"或执行完全登录的其他命令。

通常是login程序根据数据库中用户的登录 shell 的内容来设置此变量passwd。无论任何进程接受来自用户的登录请求(例如通过sshdgdm等等),这都会被称为登录过程的一部分。

来自login(1)Ubuntu 的手册:

您的用户和组 ID 将根据/etc/passwd文件中的值进行设置。$HOME$SHELL$PATH$LOGNAME和的值 $MAIL根据密码条目中的相应字段进行设置。Ulimit、umask 和nice 值也可以根据GECOS 字段中的条目进行设置。

仅启动一个新的 shell 会话不会设置此变量的值,即使 shell 作为“登录 shell”启动也是如此。