先确认当前shell类型:执行echo $shell看默认登录shell,再用ps -p $$查实时运行的shell进程;若需永久切换,用chsh -s /bin/zsh或/bin/bash并重启终端,或通过系统设置→用户与群组→高级选项修改登录shell。

你刚升级到macOS Sequoia或重装系统后发现终端命令失效、npm找不到、别名不生效,大概率是Shell内核已变但配置没跟上,必须明确当前用的是bash还是zsh,并按需切换。
确认当前Shell类型
打开终端,直接执行:
echo $SHELL
返回/bin/zsh表示当前默认Shell是Zsh;返回/bin/bash则是Bash。注意:这个值只反映登录Shell设置,不代表你此刻正在运行的Shell进程——比如你手动输入bash进入子shell,$SHELL仍显示原值。
要查实时运行的Shell进程名,执行:
ps -p $$
输出中CMD列显示zsh或bash,才是你当前会话真正跑着的内核。
用chsh命令永久切换默认Shell
这是最标准、对所有新终端窗口生效的方式,修改系统用户数据库记录:
第一步:先检查目标Shell是否被系统允许
cat /etc/shells
确保输出里包含/bin/zsh和/或/bin/bash。若缺失,比如你想用Homebrew安装的最新bash(/usr/local/bin/bash),必须先用【sudo sh -c "echo '/usr/local/bin/bash' >> /etc/shells"】追加,否则chsh会拒绝。
第二步:执行切换命令
chsh -s /bin/zsh → 切换为Zsh
chsh -s /bin/bash → 切换回Bash
输入当前用户密码完成验证。成功后无任何提示,必须关闭所有终端窗口并重新打开,新会话才生效。
第三步:验证结果
重启终端后再次运行 echo $SHELL,确认路径已更新。
通过系统设置图形界面修改
适合偏好图形化操作或受限于权限策略的用户,直接调用系统账户管理接口更新登录Shell:
方法一:
点击屏幕左上角苹果菜单,选择“系统设置”→“用户与群组”→点击当前用户名右侧的锁形图标,输入管理员密码解锁→右键点击当前用户名,选择“高级选项”→在“登录 Shell”下拉菜单中,选择/bin/zsh或/bin/bash→点击“好”保存。
方法二(macOS 12及更早):
从苹果菜单 中选取“系统偏好设置”→点按“用户与群组”,点按锁形图标并输入密码→按住 Control 键点按你的用户名→选取“高级选项”→从“登录 shell”菜单中选取目标Shell→点按“好”。
仅对Terminal应用生效的临时覆盖
不更改系统级登录Shell,仅影响Terminal新建窗口/标签页启动时调用的Shell,适合调试或多Shell并行:
打开“终端”,从顶部菜单栏选取“终端”→“设置”→切换到“通用”标签页→在“Shell 的打开方式”区域,勾选“命令(完整的路径)”→在输入框中填入完整路径:【/bin/zsh 或 /bin/bash】→关闭设置窗口,新开一个终端标签页即可立即生效。











