Linux環境變數具體解釋

2021-09-07 13:47:07 字數 3466 閱讀 2501

/etc/profile:在登入時,作業系統定製使用者環境時使用的第乙個檔案。此檔案為系統的每乙個使用者設定環境資訊,當使用者第一次登入時,該檔案被執行。

並從/etc/profile.d資料夾的配置檔案裡蒐集shell的設定。

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

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

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

~/.profile:在登入時用到的第三個檔案。profile檔案,每乙個使用者都可使用該檔案輸入專用於自己使用的shell資訊。當使用者登入時,該檔案只執行一次!預設情況下。他設定一些環境變數,執行使用者的.bashrc檔案。

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

差別:改動/etc下的配置檔案對全部使用者均生效。須要root許可權,而改動~(也就是$home)下的隱藏檔案。bash_profile和.bash_rc僅對當前使用者有效。他們的差別起始就是windows系統變數和使用者變數的差別

要搞清bashrc與profile的差別,首先要弄明確什麼是互動式shell和非互動式shell,什麼是login shell 和non-login shell。

互動式模式就是shell等待你的輸入,而且執行你提交的命令。這樣的模式被稱作互動式是由於shell與使用者進行互動。

這樣的模式也是大多數使用者很熟悉的:登入、執行一些命令、簽退。當你簽退後,shell也終止了。 

shell也能夠執行在第二種模式:非互動式模式。在這樣的模式下,shell不與你進行互動,而是讀取存放在檔案裡的命令,而且執行它

們。當它讀到檔案的結尾,shell也就終止了。

bashrc與profile都用於儲存使用者的環境資訊,bashrc用於互動式non-loginshell,而profile用於互動式login shell。系統中存在很多bashrc和profile檔案,以下逐一介紹:

舉例來說。export指令碼最好放在profile下,而alias的變數最好放在bashrc下

c_include_path(for c header files)和cplus_include_path(for c++ header files)的環境變數是指明標頭檔案的搜尋路徑,此兩個環境變數指明的標頭檔案會在-i指定路徑之後,系統預設路徑之前進行搜尋。

library_path指明庫搜尋路徑。此環境變數指明路徑會在-l指定路徑之後,系統預設路徑之前被搜尋, 環境變數用於在程式編譯期間查詢動態鏈結庫時指定查詢共享庫的路徑,比如,指定gcc編譯須要用到的動態鏈結庫的資料夾。

ld_library_path環境變數用於在程式載入執行期間查詢動態鏈結庫時指定除了系統預設路徑之外的其它路徑,注意,ld_library_path中指定的路徑會在系統預設路徑之前進行查詢。

bash首先執行/etc/profile指令碼,/etc/profile指令碼先依次執行/etc/profile.d/*.sh

隨後bash會執行使用者主資料夾下的.bash_profile指令碼,.bash_profile指令碼會執行使用者主資料夾下的.bashrc指令碼,

而.bashrc指令碼會執行/etc/bashrc指令碼,可見假設系統檔案和使用者檔案同一時候改動了乙個系統變數,那麼使用者的配置會覆蓋系統的配置。由於使用者的配置檔案總是後執行

至此,全部的環境變數和初始化設定都已經載入完畢.

bash隨後呼叫terminfo和inputrc,完畢終端屬性和鍵盤對映的設定.

當中path這個變數特殊說明一下:

假設是超級使用者登入,在沒有執行/etc/profile之前,path已經設定了以下的路徑:

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

假設是普通使用者,path在/etc/profile執行之前設定了下面的路徑:

/usr/local/bin:/bin:/usr/bin

這裡要注意的是:在使用者切換並載入變數,比如su -,這時,假設使用者自己切換自己,比方root使用者再用su -root切換的話,載入的path和上面的不一樣.

準確的說。是不總是一樣.所以。在/etc/profile指令碼中。做了例如以下的配置:

if [ "$euid" = "0" ]; then

pathmunge /sbin

pathmunge /usr/sbin

pathmunge /usr/local/sbin

else

pathmunge /usr/local/sbin after

pathmunge /usr/sbin after

pathmunge /sbin after

fi假設是超級使用者登入,在/etc/profile.d/krb5.sh指令碼中,在path變數搜尋路徑的最前面新增/usr/kerberos/sbin:/usr/kerberos/bin

假設是普通使用者登入,在/etc/profile.d/krb5.sh指令碼中,在path變數搜尋路徑的最前面新增/usr/kerberos/bin

在/etc/profile指令碼中,會在path變數的最後新增/usr/x11r6/bin資料夾

在$home/.bash_profile中,會在path變數的最後新增$home/bin資料夾

以root使用者為例,終於的path會是這樣(沒有其他自己定義的基礎上)

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/x11r6/bin:/root/bin

以gatieme使用者(普通使用者)為例

/usr/kerberos/bin:/usr/bin:/bin:/usr/x11r6/bin:/home/alice/bin

有上面執行執行時機我們發現。linux下的環境變數總會在使用者下次登入或者登入shell時生效。可是我們也能夠使用source命令強制載入配置檔案,可是須要注意的是source命令僅僅對當前shell(終端有效),終端關閉後,source就失效了。要麼又一次source要麼登出。所以建立大家改動完以後登出一下

Linux環境變數具體內容介紹

在linux中,環境變數是乙個很重要的概念。環境變數可以由系統 使用者 shell以及其他程式來設定。變數就是乙個可以被賦值的字串,賦值範圍包括數字 文字 檔名 裝置以及其他型別的資料。下面的例子,我們將為變數 test 賦值,然後使用echo命令輸出 test linux programming ...

Windows 系統環境變數解釋

在dos輸入 set 而不加引數,可以顯示windows當前的環境變數。windows 系統環境變數列表 allusersprofile 列出所有使用者profile檔案位置。列出應用程式資料的預設存放位置。cd 列出當前目錄。clientname 列出聯接到終端服務會話時客戶端的netbios名。...

linux環境程式設計 環境變數 列印環境變數

在shell程式設計主題中,我們已經大致的介紹過 環境變數和本地變數啦 我們今天來具體的介紹介紹,那環境變數到底是什麼呢?是我 一.環境變數含義 特徵 環境變數是指 作業系統中用來指定作業系統執行環境的一下引數 1 特徵 字串 有統一的格式 名 值 值 值用來描述程序的環境資訊 2 使用形式 與命令...