首頁  >  文章  >  系統教程  >  Linux中環境變數的使用方法相同的生存週期來劃分

Linux中環境變數的使用方法相同的生存週期來劃分

王林
王林轉載
2024-03-25 08:00:49644瀏覽

序言:

1.環境變數是作業系統環境設定的變量,適用於整個系統的使用者程序;

2.環境變數可以在指令中設置,而使用者登出的時侯將會遺失這種設定值;

3.若要重複適用,最好在.profile中定義;環境變數的使用與本機變數的使用方式相同,

4.並且在使用之前,必須用export指令導入。

一、環境變數檔介紹

Linux中環境變數包含系統層級和使用者層級,系統層級的環境變數是每位登陸到系統的使用者都要讀取的系統變量,而使用者層級的環境變數則是該使用者使用系統時所載入的環境變量,所以管理環境變數的檔案也分為系統級和使用者級的。

二、Linux的變數種類

依變數的生存週期來界定,Linux變數可分為兩類:

1.永久的:須要更改配置文件,變數永久生效

2.暫時的:使用export指令申明即可,變數在關掉shell時失效

三、Linux環境變數檔

linux變數檔案有/etc/environment或/etc/profile或~/.profile或/etc/bash.bashrc或~/.bashrc,以及~/.bash_profile(通常是使用者在自己目錄下新建的) ,~/.bash_logout.

系統級:

1./etc/environment:是系統在登陸時讀取的第一個文件,該文件設置的是整個系統的環境,只要啟動系統才會讀取該文件redhat linux下載,用於為所有進程設定環境變數。系統使用此檔案時並不是執行此檔案中的指令,而是依照而是依照KEY=VALUE模式的程式碼,對KEY形參以VALUE,因而檔案中假如要定義PATH環境變量,只需加入一行形如PATH=$PATH:/xxx/bin的程式碼即可

2./etc/profile:此檔案是系統登陸時執行的第二個檔案。為系統的每位使用者設定環境訊息,當使用者第一次登陸時,該檔案被執行。並從/etc/profile.d目錄的設定檔中蒐集shell的設定。 (/etc/profile可以用來設定全系統所有使用者的環境變量,環境變數週期為永久性)

3./etc/bashrc:是針對所有使用者的bash初始化文件,在此中設定的環境變數將應用於所有使用者的shell中,此文件會在使用者每次開啟shell時執行一次。 (即每次新開一個終端,就會執行/etc/bashrc)。

使用者級(這種檔案處於家目錄下):

1.~/.profile:對應目前登入使用者的profile文件,用於訂定目前使用者的個人工作環境(變數是永久性),每位使用者都可使用該文件輸入專用於自己使用的shell資訊,當使用者登入時,該檔案僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案。這兒是推薦放置個人設定的地方

2.~/.bashrc:該檔案包含專用於你的bashshell的bash訊息,當登陸時以及每次開啟新的shell時,該檔案被讀取。 (~/.bashrc只針對目前用戶,變數的生命週期是永久的)

不建議放在這裡,由於每開一個shell,這個檔案會讀取一次在linux系統,預設的shell是什麼,效率肯定有影響。

3.~/.bash_profileor~./bash_login:~/.bash_profile是交互式login形式步入bash運行的,~/.bashrc是交互式non-login形式步入bash運行的一般兩者設定大致相同,所以一般後者會呼叫前者。每位使用者都可使用該檔案輸入專用於自己使用的shell訊息,當使用者登入時,該檔案僅執行一次。預設情況下,他設定一些環境變量,執行使用者的.bashrc檔。 (假如~/目錄下沒有.bash_profile則新建一個)這兒是推薦放置個人設定的地方

當一個shell關掉時,在bash_profile中定義的系統變數則會失效。為此,每開啟新的shell時都要執行一次sourcebash_profile.並且針對目前使用者。

4.~/.pam_environment:用戶級的環境變數設定文件,沒有做測試,不曉得管不管用。

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

四、Linux環境變數檔執行順序

1.在登陸Linux時要執行檔案的程序如下:

在剛登陸Linux時在linux系統,預設的shell是什麼

先啟動/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
 . /etc/bashrc
fi

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

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

/etc/profile和/etc/environment等各類別環境變數設定檔的好處

1)先將exportLANG=zh_CN加入/etc/profile,退出系統重新登陸,登陸提示顯示中文。

2)先將/etc/profile中的exportLANG=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中標麒麟linux,再讀取檔案/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

緣由應當是使用者環境和系統環境的區別了,若果同一個變數在使用者環境(/etc/profile)和系統環境(/etc/environment)有不同的值,則應是以使用者環境為準了。

五、Linux中常見的環境變數及其作用

Linux中常見的環境變數有:

1.PATH:指定指令的搜尋路徑

2.HOME:指定使用者的主工作目錄(即使用者登入Linux系統時,預設的目錄)

3.HISTSIZE:指保存歷史指令記錄的條數。

4.LOGNAME:指目前使用者的登陸名。

5.HOSTNAME:指主機的名稱,許多應用程式假如要用到主機名稱的話,一般是從這個環境變數中來取得的。

6.SHELL:指目前使用者用的是哪一種Shell。

7.LANG/LANGUGE:和語言相關的環境變量,使用多種語言的使用者可以更改此環境變量。

在linux系统,默认的shell是什么_在linux系统,默认的shell是什么_在linux系统,默认的shell是什么

#8.MAIL:指目前使用者的電郵儲存目錄。

9.PS1:指令基本提示符,對root使用者是#,對一般使用者是$。

10.PS2:附屬提示符,預設是「>」。

備註:可以透過變更此環境變數來變更目前的命令符,例如下述指令會將提示符號變更成字串「Hello,MyNewPrompt」。

#PS1="Hello,MyNewPrompt"

注意:上述變數的名子並不固定,如HOSTNAME在個別Linux系統中可能設定成HOST

其實,我所列出的上述環境變數並非用盡列舉!

Linux也提供了一個更改和查看環境變數的命令!下邊透過幾個實例來說明:

1.echo顯示某個環境變數值echo$PATH

2.export設定一個新的環境變數exportHELLO="hello"(可以無頓號),在shell的命令列下直接使用[export變數名=變數值]定義變量,該變數只在目前的shell (BASH)或其子shell(BASH)下方是有效的,shell關掉了,變數也就失效了,再開啟新shell時就沒有這個變量,須要使用的話還須要重新定義。

3.env顯示所有環境變數

4.set顯示本地定義(系統中早已存在)的shell變數以及設定shell變數的新變數值,倘若未指定值,則變數值將會設為NULL。

5.unset清理環境變數unsetHELLO

#6.readonly設定只讀環境變數readonlyHELLO,假如使用了readonly指令的話,變數就不可以被更改或清除不僅 ###

以上是Linux中環境變數的使用方法相同的生存週期來劃分的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:itcool.net。如有侵權,請聯絡admin@php.cn刪除