`.bash_profile` 和 `.bashrc` 都是Bash shell的配置文件,用于定制用户的shell环境,但它们之间存在一些差异,主要在于何时以及在何种类型的shell会话中被读取:
**.bash_profile**
- 主要用于登录shell。当你通过ssh登录,或者在图形界面终端模拟器中打开一个初始的shell会话时,`.bash_profile`会被执行。
- 适合放置启动时只执行一次的命令,比如设置环境变量(如`PATH`、`LD_LIBRARY_PATH`)、运行一次性的脚本或程序等。
- 如果`.bash_profile`不存在,Bash会尝试寻找`.bash_login`,如果`.bash_login`也不存在,则会读取`.profile`。
**.bashrc**
- 主要用于交互式非登录shell。当你在一个已经登录的会话中打开一个新的终端窗口或tab时,通常会执行`.bashrc`。
- 因为它针对交互式使用场景,所以适合放置别名(aliases)、shell函数、prompt自定义以及需要在每个新的交互式shell中重复设置的环境变量等。
- 某些系统上,默认的`.bash_profile`会包含一行代码来调用`.bashrc`,以确保非登录shell也能应用这些设置。
**总结:**
- 如果你需要设置的环境变量或命令既适用于登录shell也适用于非登录shell,可以在`.bash_profile`中添加调用`.bashrc`的命令(如果默认没有的话),或者直接在`.bash_profile`中设置那些对两种shell都通用的配置。
- 分开使用这两个文件有助于保持配置的清晰性和逻辑性,让登录相关的设置集中在`.bash_profile`,而与交互式shell体验相关的配置放在`.bashrc`中。