Linux 中 ~/.bashrc、/etc/profile、etc/bashrc 的区别
/etc/profile
其实看名字就能了解大概了, profile 是某个用户唯一的用来设置环境变量的地方, 因为用户可以有多个 shell 比如 bash, sh, zsh 之类的, 但像环境变量这种其实只需要在统一的一个地方初始化就可以了, 而这就是 profile.
当用户第一次登录时,该文件被执行。也就是说这个文件对每个用户都有效,用于获取系统的环境信息。
~/.bashrc
该文件存储的是专属于个人bash shell的信息,只对当前登录的用户有效。当登录时以及每次打开一个新的shell时,执行这个文件。在这个文件里可以自定义用户专属的个人信息(比如环境变量)。
/etc/bashrc
为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。也就是说,当用户shell执行了bash时,运行这个文件。
bashrc在Ubuntu下叫做bash.bashrc。bashrc 也是看名字就知道, 是专门用来给 bash 做初始化的比如用来初始化 bash 的设置, bash 的代码补全, bash 的别名, bash 的颜色. 以此类推也就还会有 shrc, zshrc 这样的文件存在了, 只是 bash 太常用了而已。
相关文件的读取顺序
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。
如果 ~/.bash_profile 文件存在的话,一般还会执行 ~/.bashrc文件。因为一般在 ~/.bash_profile 中会使用 . ~/.bash_profile 执行 .bashrc。
来源:/etc/profile,/etc/bashrc与~/.bashrc的区别及联系 - 知乎 (zhihu.com)