/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)
