macos自catalina起默认shell为zsh,需用chsh -s /bin/zsh或chsh -s /bin/bash切换,默认配置文件分别为~/.zshrc和~/.bash_profile,切换后须迁移环境变量并执行source命令生效。

Mac终端如何切换Bash和Zsh内核——你刚升级到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
输入当前用户密码完成验证。成功后无任何提示,必须关闭所有终端窗口并重新打开,新会话才生效。
这本书假定你没有任何关于脚本或一般程序的编程知识, 但是如果你具备相关的知识, 那么你将很容易就能够达到中高级的水平. . . 所有这些只是UNIX®浩瀚知识的一小部分. 你可以把本书作为教材, 自学手册, 或者是关于shell脚本技术的文档. 书中的练习和样例脚本中的注释将会与读者进行更好的互动, 但是最关键的前提是: 想真正学习脚本编程的唯一途径就是亲自动手编写脚本. 这本书也可作为教材来讲解一般的编程概念. 向伟大的中华民族的Linux用户致意! 我希望这本书能够帮助你们学习和理解L
第三步:验证结果
重启终端后再次运行 echo $SHELL,确认路径已更新。
不改系统设置,仅让Terminal应用启动时用指定Shell
适合需要同时保留bash主环境、又想临时用zsh调试脚本的场景,不影响其他终端App(如iTerm2)或SSH登录行为:
方法一:图形界面设置
1. 打开“终端”→顶部菜单栏“终端”→“设置”→切换到“通用”标签页
2. 在“Shell 的打开方式”区域,勾选“命令(完整的路径)”
3. 输入完整路径,例如:/bin/zsh 或 /bin/bash
4. 关闭设置窗口,新开一个标签页立即生效
方法二:命令行快速覆盖(仅限当前Terminal实例)
在终端中直接输入 zsh 或 bash,就会启动对应子Shell;退出时按 Ctrl+D 或输入 exit 即可回到原Shell。这一步操作起来很简单,关掉窗口就自动结束,不会留下任何痕迹。
切换后关键配置迁移
Zsh不读.bash_profile,Bash也不读.zshrc——配置文件完全隔离。切完Shell若发现PATH错乱、alias失效、npm命令找不到,说明旧配置没搬过去:
如果你从Bash切到Zsh:
用文本编辑器打开 ~/.zshrc,插入这一行:
source ~/.bash_profile
⚠️注意:仅当你的.bash_profile里没有交互式命令(比如read、select)时才安全。否则zsh启动会卡住等待输入。
更稳妥的做法是把PATH、alias、function等干净内容单独提取出来,粘贴进 ~/.zshrc,然后执行:
source ~/.zshrc
如果你从Zsh切回Bash:
确保 ~/.bash_profile 存在且已启用,必要时把 ~/.zshrc 中的关键export和alias复制过去,再运行 source ~/.bash_profile。










