默认 Shell 应通过 getent passwd $USER | cut -d: -f7 或 /etc/passwd 查看,而非 $SHELL;改用 chsh -s /bin/zsh 切换,重启终端生效;zsh 不兼容 bash 配置,需迁移至 ~/.zshrc。
怎么确认当前默认 Shell 是 bash
直接看 /etc/passwd 里你用户的那一行,最后一个字段就是默认 Shell。比如这行:alice:x:1001:1001::/home/alice:/bin/bash,说明当前默认是 /bin/bash。
别只信 $SHELL 环境变量——它可能被手动改过,不反映系统级默认值。
更可靠的方式是运行:getent passwd $USER | cut -d: -f7
用 chsh 切换默认 Shell 到 zsh
chsh 是唯一推荐的修改方式,它会校验 Shell 是否在 /etc/shells 里,避免把系统搞坏。
操作步骤:
- 先确认
zsh已安装且路径正确:which zsh(常见是/bin/zsh或/usr/bin/zsh) - 把它加进
/etc/shells(如果还没加):echo "/bin/zsh" | sudo tee -a /etc/shells - 执行
chsh -s /bin/zsh,输入密码确认
注意:chsh 必须在登录 Shell 中运行,不能在子 Shell 或脚本里静默调用——它会拒绝非交互式修改。