1、针对Bash Shell的配置文件
- ~/.bash_profile
- 读取时机:当用户登录到 Bash shell 时读取。这是 Bash shell 特有的配置文件。
- 作用范围:用户级配置,仅适用于当前用户的 Bash shell 会话。
- 内容:通常用于设置环境变量、路径、别名和其他用户级配置。~/.bash_profile 还可以用来调用其他配置文件,如 ~/.bashrc。
- ~/.bashrc
- 读取时机:每次打开新的 Bash shell 会话时(无论是通过终端还是其他方式)都会读取。
- 作用范围:用户级配置,仅适用于当前用户的 Bash shell 会话。
- 内容:通常用于设置别名、函数、主题等个性化配置。与 ~/.bash_profile 不同,~/.bashrc 更侧重于交互式会话的个性化设置。
2、针对Zsh Shell的配置文件
- ~/.zprofile
- 读取时机:~/.zprofile 通常在用户登录到 Zsh shell 时被读取。这意味着,当用户通过 SSH 登录到系统,或者使用终端模拟器以登录 shell 的方式启动 Zsh 时,这个文件会被执行。
- 作用范围:用户级配置,仅对当前用户有效。
- 内容:通常用于设置环境变量、路径和其他全局配置,这些配置只需要在用户登录时执行一次。由于 ~/.zprofile 是在登录时读取的,因此它适合放置那些只需要在会话开始时执行一次的命令或设置。
- ~/.zshrc
- 读取时机:~/.zshrc 每次打开新的 Zsh 会话时都会被读取,无论是通过终端直接打开的交互式 shell,还是通过其他方式启动的非登录 shell。
- 作用范围:用户级配置,仅对当前用户有效。
- 内容:通常用于设置别名、函数、主题、环境变量以及其他个性化配置。由于 ~/.zshrc 在每次新的 shell 会话时都会被读取,因此它适合放置那些每次打开终端时都需要生效的设置。
3、系统级配置文件
-
/etc/profile:全局共有配置,为系统的每个用户设置环境信息和启动程序。其配置对所有登录的用户都有效,但由于它影响所有用户,因此一般不建议轻易修改。
-
/etc/paths:全局共有配置,任何用户登录时都会读取该文件。它用于设置环境变量,但不需要使用export命令。文件内容中的每一行路径都会被添加到环境变量中。系统启动时会加载该文件,修改它需要Root权限。
-
/etc/bashrc:系统级配置,为每个运行bash shell的用户执行该文件。当bash shell打开时,该文件被执行,其配置对所有使用bash的用户打开的每个bash都有效。
4、总结
Mac系统环境变量的加载顺序:a -> f
a. /etc/profile
b. /etc/paths
c. ~/.bash_profile
d. ~/.bash_login
e. ~/.profile
f. ~/.bashrc
自macOS Catalina(10.15)以来,Zsh已成为macOS的默认shell。因此,大多数用户会在.zshrc文件中进行配置,以确保每次打开终端时都能应用个性化设置。然而,仍有一些用户可能在使用Bash,特别是在某些特定环境中(如脚本编写),在这种情况下,他们会在.bashrc文件中进行配置。
请注意,配置文件的加载顺序和优先级可能因Mac OS版本和用户的具体设置而有所不同。在进行配置修改时,建议先备份原始文件,并仔细了解每个配置文件的作用和加载顺序,以避免不必要的错误和冲突。