答案1
当 bash 在类 Debian/Ubuntu 系统上初始化非登录交互式 bash shell 时,shell 首先读取/etc/bash.bashrc
,然后读取~/.bashrc
。
在正常的 bash 文档中没有出现的原因/etc/bash.bashrc
(例如这里或者这里) 是 Debian 添加并被 Ubuntu 采用的功能。正如 Debian 解释的那样 (自述文件):
- /etc/bash.bashrc 是什么?它似乎没有记录。
Debian 版 bash 编译时带有特殊选项 (
-DSYS_BASHRC
),该选项使 bash 在交互式非登录 shell/etc/bash.bashrc
之前进行读取。因此,在 Debian 系统上,是, 是。~/.bashrc
/etc/bash.bashrc
~/.bashrc
/etc/profile
~/.bash_profile
因此,/etc/bash.bashrc
Debian 和 Ubuntu 手册页中记录了该功能,但其他不支持该功能的发行版的手册页中却没有记录该功能。
更新:更多发行版
/etc/bash.bashrc
已经在 Debian 圈子之外被采用,因为评论表明它在 Arch Linux、MSYS2 和 Git Bash 等发行版中使用。
答案2
如果 shell 是交互的,则为系统范围的初始化文件/etc/bash.bashrc
和标准个人初始化文件。~/.bashrc