我参考了这个答案来更改我的默认外壳如何将默认 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/zsh
从echo $0
答案1
仅当您执行完全登录时才会设置环境SHELL
变量,例如注销并再次登录,或者使用su - "$USER"
或ssh "$USER@localhost"
或执行完全登录的其他命令。
通常是login
程序根据数据库中用户的登录 shell 的内容来设置此变量passwd
。无论任何进程接受来自用户的登录请求(例如通过sshd
或gdm
等等),这都会被称为登录过程的一部分。
来自login(1)
Ubuntu 的手册:
您的用户和组 ID 将根据
/etc/passwd
文件中的值进行设置。$HOME
、$SHELL
、$PATH
、$LOGNAME
和的值
仅启动一个新的 shell 会话不会设置此变量的值,即使 shell 作为“登录 shell”启动也是如此。
答案2
想要补充 Kusalananda 优秀且被接受的答案:
在 macOS 上,如果您想在不退出 GUI 的情况下查看更改,您可以在终端中输入以下内容:
$ logout [your username]
然后打开一个新的终端会话并输入:
echo $SHELL
您将看到新的环境设置。