macOS 下 `.bash_profile` 和 `.zshrc` 的区别
2026/6/26大约 2 分钟运维SHELL
.bash_profile和.zshrc都能放环境变量、别名和自定义命令,但它们并不是同一个东西,加载时机也不一样。
先说结论
在 macOS 里,默认 Shell 已经是 Zsh,所以大多数情况下你平时真正会用到的是 ~/.zshrc,而不是 ~/.bash_profile。
如果你的老配置还写在 ~/.bash_profile 里,最常见的做法不是把内容全部重抄一遍,而是在 ~/.zshrc 里主动引入它:
source ~/.bash_profile
两者区别
| 文件 | 对应 Shell | 作用 |
|---|---|---|
~/.bash_profile | Bash | Bash 登录时读取的配置文件 |
~/.zshrc | Zsh | Zsh 交互式终端常用的配置文件 |
~/.bash_profile 是 Bash 的配置文件,~/.zshrc 是 Zsh 的配置文件。macOS 现在默认使用 Zsh,所以新开终端时,通常会优先读取 ~/.zshrc,不会直接执行 ~/.bash_profile。
source 到底在做什么
很多人会把“修改配置文件”和“让配置生效”混在一起,其实这是两件事。
- 修改
~/.bash_profile或~/.zshrc,是把内容保存到文件里,这本身就是永久的。 - 执行
source ~/.zshrc或source ~/.bash_profile,只是让当前这个终端窗口立刻重新加载配置。
也就是说,source 的作用不是“永久保存”,而是“当前窗口马上生效”。
怎么确认自己在用什么 Shell
先看当前系统使用的是不是 Zsh:
echo $SHELL
如果输出类似下面这样,说明当前使用的是 Zsh:
tianyi@TianyideMacBook-Air ~ % echo $SHELL
/bin/zsh
也可以顺手查看版本:
zsh --version
Zsh 下如何复用 .bash_profile
如果你现在用的是 Zsh,但以前很多环境变量都写在 ~/.bash_profile 里,可以按下面的方式处理。
1. 编辑 ~/.zshrc
vim ~/.zshrc
2. 在文件末尾加入
source ~/.bash_profile
3. 保存后重新加载配置
source ~/.zshrc
这样做之后:
- 当前终端会立刻拿到新配置
- 后续新开的 Zsh 窗口也会自动加载这些内容
