bash profile和 bashrc的區別

2021-06-07 23:45:41 字數 2616 閱讀 1267

另外,/etc/profile中設定的變數(全域性)的可以作用於任何使用者,而~/.bashrc等中設定的變數(區域性)只能繼承/etc/profile中的變數,他們是"父子"關係.

~/.bash_profile 是互動式、login 方式進入 bash 執行的

~/.bashrc是互動式 non-login 方式進入 bash 執行的

通常二者設定大致相同,所以通常前者會呼叫後者。

在登入linux時要執行檔案的過程如下:

在剛登入linux時,首先啟動 /etc/profile 檔案,然後再啟動使用者目錄下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile檔案中的其中乙個,

執行的順序為:~/.bash_profile、 ~/.bash_login、 ~/.profile。

如果 ~/.bash_profile檔案存在的話,一般還會執行 ~/.bashrc檔案。

因為在 ~/.bash_profile檔案中一般會有下面的**:

if [ -f ~/.bashrc ] ; then

. ./bashrc

fi~/.bashrc中,一般還會有以下**:

if [ -f /etc/bashrc ] ; then

. /bashrc

fi所以,~/.bashrc會呼叫 /etc/bashrc檔案。最後,在退出shell時,還會執行 ~/.bash_logout檔案。

執行順序為:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

關於各個檔案的作用域,在網上找到了以下說明:

(1)/etc/profile: 此檔案為系統的每個使用者設定環境資訊,當使用者第一次登入時,該檔案被執行. 並從/etc/profile.d目錄的配置檔案中蒐集shell的設定。

(2)/etc/bashrc: 為每乙個執行bash shell的使用者執行此檔案.當bash shell被開啟時,該檔案被讀取。

(3)~/.bash_profile:每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,當使用者登入時,該檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案。

(4)~/.bashrc:該檔案包含專用於你的bash shell的bash資訊,當登入時以及每次開啟新的shell時,該該檔案被讀取。

(5)~/.bash_logout: 當每次退出系統(退出bash shell)時,執行該檔案. 另外,/etc/profile中設定的變數(全域性)的可以作用於任何使用者,而~/.bashrc等中設定的變數(區域性)只能繼承 /etc/profile中的變數,他們是"父子"關係。

(6)~/.bash_profile 是互動式、login 方式進入 bash 執行的~/.bashrc 是互動式 non-login 方式進入 bash 執行的通常二者設定大致相同,所以通常前者會呼叫後者。

/etc/profile和/etc/environment等各種環境變數設定檔案的用處

先將export lang=zh_cn加入/etc/profile ,退出系統重新登入,登入提示顯示英文。

將/etc/profile 中的export lang=zh_cn刪除,將lnag=zh_cn加入/etc/environment,退出系統重新登入,登入提示顯示中文。

使用者環境建立的過程中總是先執行/etc/profile然後在讀取/etc/environment。為什麼會有如上所敘的不同呢?

應該是先執行/etc/environment,後執行/etc/profile。

/etc/environment是設定整個系統的環境,而/etc/profile是設定所有使用者的環境,前者與登入使用者無關,後者與登入使用者有關。

系統應用程式的執行與使用者環境可以是無關的,但與系統環境是相關的,所以當你登入時,你看到的提示資訊,象日期、時間資訊的顯示格式與系統環境的lang是相關的,預設lang=en_us,如果系統環境lang=zh_cn,則提示資訊是中文的,否則是英文的。

對於使用者的shell初始化而言是先執行/etc/profile,再讀取檔案/etc/environment.對整個系統而言是先執行/etc/environment。這樣理解正確嗎?

/etc/enviroment --> /etc/profile --> $home/.profile -->$home/.env (如果存在)

/etc/profile 是所有使用者的環境變數

/etc/enviroment是系統的環境變數

登陸系統時shell讀取的順序應該是

/etc/profile ->/etc/enviroment -->$home/.profile -->$home/.env

原因應該是jtw所說的使用者環境和系統環境的區別了

如果同乙個變數在使用者環境(/etc/profile)和系統環境(/etc/environment)有不同的值那應該是以使用者環境為準了。

bash profile和 bashrc的什麼區別

etc profile 此檔案為系統的每個使用者設定環境資訊,當使用者第一次登入時,該檔案被執行.並從 etc profile.d目錄的配置檔案中蒐集shell的設定.etc bashrc 為每乙個執行bash shell的使用者執行此檔案.當bash shell被開啟時,該檔案被讀取.bash p...

bashrc和 bash profile的區別

etc profile 此檔案為系統的每個使用者設定環境資訊,當使用者第一次登入時,該檔案被執行。並從 etc profile.d目錄的配置檔案中蒐集shell的設定.其中的設定對所有的使用者有用 etc bashrc 為每乙個執行bash shell的使用者執行此檔案.當bash shell被開啟...

bash profile和 bashrc的區別

bash profile和.bashrc的區別 1 etcprofile 此檔案為系統的每個使用者設定環境資訊,當使用者第一次登入時,該檔案被執行.並從etcprofile.d目錄的配置檔案中蒐集shell的設定。2 etcbashrc 為每乙個執行bash shell的使用者執行此檔案.當bash...