Mac终端启动默认进入主目录,需修改对应Shell配置文件(如~/.zshrc或~/.bash_profile)添加cd命令,并执行source生效;先用echo $SHELL确认Shell类型,再按需迁移配置。

每次打开Mac终端都跳到用户主目录,想让它一启动就自动进入项目文件夹或桌面,避免反复输入cd命令。你刚升级到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路径,适用于所有macOS版本,且更改对所有新终端会话生效。
① 打开“终端”应用,执行命令查看系统支持的Shell列表:
cat /etc/shells
② 确认目标Shell(如/bin/zsh或/bin/bash)已存在于输出中;若缺失,需先用
sudo sh -c "echo '/path/to/shell' >> /etc/shells"
追加,否则chsh会拒绝。
③ 执行切换命令:
chsh -s /bin/zsh → 切换为Zsh
chsh -s /bin/bash → 切换回Bash
输入当前用户密码完成验证。成功后无任何提示,必须关闭所有终端窗口并重新打开,新会话才生效。
④ 验证结果:
重启终端后再次运行 echo $SHELL,确认路径已更新。
通过系统设置图形界面修改默认Shell
此方式绕过命令行,适合偏好图形化操作或受限于权限策略的用户,直接调用系统账户管理接口更新登录Shell。
方法一:系统设置(macOS Ventura 13 及更高版本)
点击屏幕左上角苹果菜单 → 选择“系统设置” → 进入“用户与群组” → 点击当前用户名右侧的锁形图标,输入管理员密码解锁 → 按住 Control 键点按当前用户名 → 选取“高级选项” → 在“登录 Shell”下拉菜单中,选择/bin/zsh或/bin/bash → 点击“好”保存。
方法二:系统偏好设置(macOS Monterey 及更早版本)
从苹果菜单 中选取“系统偏好设置” → 点按“用户与群组” → 点按锁形图标并输入密码 → 在左侧用户列表中按住 Control 键点按用户名 → 选取“高级选项” → 修改“登录 shell” → 点按“好”。
关闭设置窗口后重启终端即可生效。
仅让Terminal应用启动时用指定Shell(不改系统级设置)
适合需要同时保留bash主环境、又想临时用zsh调试脚本的场景,不影响其他终端App(如iTerm2)或SSH登录行为。
方法1:图形界面设置
打开“终端”→顶部菜单栏“终端”→“设置”→切换到“通用”标签页→在“Shell 的打开方式”区域,勾选“命令(完整的路径)”→输入完整路径,例如:/bin/zsh或/bin/bash→关闭设置窗口,新开一个标签页立即生效。
方法2:命令行快速覆盖(仅限当前Terminal实例)
在终端中直接输入 zsh 或 bash,就会启动对应子Shell;退出时按 Ctrl+D 或输入 exit 即可回到原Shell。这一步操作起来很简单,关掉窗口就自动结束,不会留下任何痕迹。
切换后必须迁移环境变量并立即生效
Shell切换后,旧配置文件里的PATH、alias、函数等不会自动加载,必须手动迁移并激活。
第一步:确认你当前用的是哪个Shell
执行 echo $SHELL,返回/bin/zsh就去改 ~/.zshrc(或 ~/.zprofile),返回/bin/bash才去动 ~/.bash_profile。
第二步:把旧配置里关键内容复制过去
比如原 ~/.bash_profile 中有:
export PATH="/usr/local/bin:$PATH"
alias ll="ls -la"
现在用zsh,就把这两行粘贴进 ~/.zshrc 末尾。
第三步:执行 source ~/.zshrc(zsh)或 source ~/.bash_profile(bash)使改动即时生效。
【务必执行这一步,否则所有修改都不起作用】

















