linux 環境變數詳解

2021-05-25 12:28:38 字數 3838 閱讀 2296

1 、總結背景

2 、變數簡介

linux 是乙個多使用者的作業系統 。每個使用者登入系統後,都會有乙個專用的執行環境。通常每個使用者預設的環境都是相同的,這個預設環境實際上就是一組環境變數的定義。使用者可以對自己的執行環境進行定製,其方法就是修改相應的系統環境變數。

3 、定製環境變數

環境變數是和 shell 緊密相關的,使用者登入系統後就啟動了乙個 shell 。對於 linux 來說一般是 bash ,但也可以重新設定或切換到其它 的 shell (使用 chsh 命令)。

根據發行版本的情況, bash 有兩個基本的系統級配置檔案: /etc/bashrc 和 /etc/profile 。這些配置檔案包含兩組不同的變數: shell 變數和環境變數。前者只是在特定的 shell 中固定(如 bash ),後者在不同 shell 中固定。很明顯, shell 變數是區域性的,而環境變數是全域性的。環境變數是通過 shell 命令來設定的,設定好的環境變數又可以被所有當前使用者所執行的程式所使用。對於 bash 這個 shell 程式來說,可以通過變數名來訪問相應的環境變數,通過 export 來設定環境變數。

注: linux 的環境變數名稱一般使用大寫字母

4 、環境變數設定 例項

1. 使用命令 echo 顯示環境變數

本例使用 echo 顯示常見的變數 home

$ echo $home  

/home/kevin

2. 設定乙個新的環境變數

$ export myname=」my name is kevin」

$ echo $ myname

my name is kevin

3. 修改已存在的環境變數

接上個示例

$ myname=」change name to jack」

$ echo $myname

change name to jack

4. 使用 env 命令顯示所有的環境變數

$ env

hostname=localhost.localdomain

shell=/bin/bash

term=xterm

histsize=1000

ssh_client=192.168.136.151 1740 22

qtdir=/usr/lib/qt-3.1

ssh_tty=/dev/pts/0

5. 使用 set 命令顯示所有本地定義的 shell 變數

$ set

bash=/bin/bash

bash_env=/root/.bashrc

6. 使用 unset 命令來清除環境變數

$ export temp_kevin=」kevin」      # 增加乙個環境變數 temp_kevin

$ env | grep temp_kevin           # 檢視環境變數 temp_kevin 是否生效(存在即生效)

temp_kevin=kevin   # 證明環境變數 temp_kevin 已經存在

$ unset temp_kevin             # 刪除環境變數 temp_kevin

$ env | grep temp_kevin        # 檢視環境變數 temp_kevin 是否被刪除,沒有輸出顯示,證明 temp_kevin 被清除了。

7. 使用 readonly 命令設定唯讀變數

注:如果使用了 readonly 命令的話,變數就不可以被修改或清除了。

$ export temp_kevin ="kevin"       # 增加乙個環境變數 temp_kevin

$ readonly temp_kevin                   # 將環境變數 temp_kevin 設為唯讀

$ env | grep temp_kevin           # 檢視環境變數 temp_kevin 是否生效

temp_kevin=kevin           # 證明環境變數 temp_kevin 已經存在

$ unset temp_kevin            # 會提示此變數唯讀不能被刪除

-bash: unset: temp_kevin: cannot unset: readonly variable

$ temp_kevin ="tom"           # 修改變數值為 tom 會提示此變數唯讀不能被修改

-bash: temp_kevin: readonly variable

8. 通過修改環境變數定義檔案來修改環境變數。

需要注意的是,一般情況下,僅修改普通使用者環境變數配置檔案,避免修改根使用者的環境定義檔案,因為那樣可能會造成潛在的危險。

$ cd ~                                   # 到使用者根目錄下

$ ls -a                                  # 檢視所有檔案,包含隱藏的檔案

$ vi .bash_profile                 # 修改使用者環境變數檔案

例如:

path=$path::::------:

你可以自己加上指定的路徑,中間用冒號隔開。

環境變數更改後,在使用者下次登陸時生效。

如果想立刻生效,則可執行下面的語句: $source .bash_profile

需要注意的是,最好不要把當前路徑 」./」 放到 path 裡,這樣可能會受到意想不到的攻擊。

完成後,可以通過 $ echo $path 檢視當前的搜尋路徑。這樣定製後,就可以避免頻繁的啟動位於 shell 搜尋的路徑之外的程式了。

5 、學習 總結

1.linux 的變數種類

按變數的生存週期來劃分, linux 變數可分為兩類:

1.       永久的:需要修改配置檔案,變數永久生效。

2.       臨時的:使用 export 命令列宣告即可,變數在關閉 shell 時失效。

2. 設定變數的三種方法

1.       在 /etc/profile 檔案 中新增變數【對所有使用者生效(永久的)】

用 vi 在檔案 /etc/profile 檔案中增加變數,該變數將會對 linux 下所有使用者有效,並且是「永久的」。

例如:編輯 /etc/profile 檔案,新增 classpath 變數

# vi /etc/profile

export path=路徑;

注:修改檔案後要想馬上生效還要執行 # source /etc/profile 不然只能在下次重進此使用者時生效。

2.       在使用者目錄下的 .bash_profile 檔案 中增加變數【對單一使用者生效(永久的)】

用 vi 在使用者目錄下的 .bash_profile 檔案中增加變數,改變量僅會對當前使用者有效,並且是「永久的」。

例如:編輯 guok 使用者目錄( /home/guok )下的 .bash_profile

$ vi /home/guok/.bash.profile

新增如下內容:

export path=路徑;

注:修改檔案後要想馬上生效還要執行 $ source /home/guok/.bash_profile 不然只能在下次重進此使用者時生效。

3.       直接執行 export 命令 定義變數【只對當前 shell ( bash )有效(臨時的)】

在 shell 的命令列下直接使用 [export 變數名 = 變數值 ] 定義變數,該變數只在當前的 shell ( bash )或其子 shell ( bash )下是有效的, shell 關閉了,變數也就失效了,再開啟新 shell 時就沒有這個變數,需要使用的話還需要重新定義。

Linux環境變數詳解

環境變數的本質就是變數,它的服務物件是shell程式,它分為區域性環境變數和全域性環境變數,分別有不同的作用域和自然生命週期 不同的情況下,會產生不同的shell。既然環境變數是服務於shell程式的,那麼就來分析一下不同角色的shell 使用export匯出的環境變數,就是全域性環境變數 在 et...

linux 環境變數詳解

全域性環境變數 對於shell會話和它生成的所有子shell都是可見的。區域性環境變數 只在建立他們的shell中可見。全域性和區域性變數是否可以用我們程式語言中的父類和子類來幫助了解?檢視全域性變數的值 1 printenv 檢視所有全域性變數的值,printenv 變數名 檢視指定變數名的全域性...

Linux 環境變數詳解

定義 用於儲存系統執行環境引數的變數 作用 使系統的引數配置更加靈活,可以通過環境變數向程序傳遞引數,環境變數通常具有某些特殊用途,還有在系統當中通常具有全域性特性。環境變數字串都是name value這樣的形式,大多數name由大寫字母加下劃線組成,一般把name的部分叫做環境變數,value的部...