Linux環境變量


本文地址:http://www.cnblogs.com/archimedes/p/linux-envionment-variables.html,轉載請注明源地址。

1.什么是環境變量

bash shell用一個稱作環境變量的特性來存儲有關shell會話和工作環境的信息,它允許你在內存中存儲數據,以便運行在shell上的程序和腳本訪問

在bash shell中,環境變量分為兩類:全局變量和局部變量

(1)全局環境變量

全局環境變量不僅對shell會話可見,對所有shell創建的子進程中需要獲得父進程信息的程序來說非常有用。Linux系統在你開始bash會話之前就設置了一些全局環境變量

系統環境變量的一律用全大寫字母以區別與普通用戶的環境變量

查看全局變量,可以使用printenv命令(由於結果太多,不寫出來)

要顯示單個環境變量,可以使用echo命令。當引用環境變量時,必須在環境變量的名稱前放置一個$符:

wu@ubuntu:~/Ccode$ echo $HOME
/home/wu

(2)局部環境變量

局部環境變量只能在定義它們的進程中可見,查看局部環境變量的列表有點復雜,在Linux系統中並沒有這樣的一個命令只顯示局部環境變量

set命令會顯示某個特定進程設置的所有環境變量,當然也包括全局變量

2.設置環境變量

(1)設置局部環境變量

一旦啟動了bash shell,你就能創建在這個shell進程內可見的局部變量了,你可以通過等號來給環境變量賦值,值可以是數值或字符串:

wu@ubuntu:~$ test=testing
wu@ubuntu:~$ echo $test
testing

如果要給變量賦一個含有空格的字符串,必須用單引號來界定字符串的開始和結尾:

wu@ubuntu:~$ test=testing a long string
a: command not found
wu@ubuntu:~$ test='testing a long string'
wu@ubuntu:~$ echo $test
testing a long string

(2)設置全局環境變量

創建全局環境變量的方法是先創建一個局部環境變量,然后再把它導出到全局環境中

這個過程通過export命令來完成:

wu@ubuntu:~$ echo $test
testing a long string
wu@ubuntu:~$ export test
wu@ubuntu:~$ bash
wu@ubuntu:~$ echo $test
testing a long string

(3)刪除環境變量

可以使用unset命令來刪除環境變量:

wu@ubuntu:~$ echo $test
testing a long string
wu@ubuntu:~$ unset test
wu@ubuntu:~$ echo $test

wu@ubuntu:~$

3.默認shell環境變量

1、BASH :記錄當前bash shell的路徑。

2、BASH_SUBSHELL  :記錄當前子shell的層次。BASH_SUBSHELL是從0開始計數的整數。

3、BASH_VERSINFO  :是一個數組包含六個元素,這六個元素顯示bash的版本信息。

4、BASH_VERSION  :顯示shell版本的信息。

5、DIRSTACK  :記錄了棧頂的目錄值,初值為空。

6、GLOBLGNORE :是由冒號分割的模式列表,表示通配時忽略的文件名集合。

7、GROUPS   :記錄當前用戶所屬的組。

8、HOME :記錄當前用戶的家目錄,由/etc/passwd的倒數第二個域決定。

9、HOSTNAME  :記錄主機名。

10、HOSTTYPE和MACHTYPE :都是記錄系統的硬件架構。

11、IFS  :用於設置指定shell域分隔符,默認情況下為空格。

12、OLDPWD   :記錄舊的工作目錄。

13、OSTYPE  :記錄操作系統類型。

14、PATH  :環境變量,顯示當前PATH環境變量的內容。

15、PPID :是創建當前進程的進程號,即當前進程的父進程號

16、PS1  :提示符變量,用於設置提示符格式,用於設置一級shell提示符環境變量。

17、PS2  :用於設置二級shell提示符環境變量。

18、PWD :記錄當前路徑

19、REPLY  :REPLY變量與read和select有關。

20、SECONDS:記錄腳本從開始到結束耗費的時間。

21、SHELL :顯示當前所用的shell

22、SHELLOPTS  :記錄了處於“開”狀態的shell選項列表,它只是一個只讀變量。

23、SHLVL   :記錄了bash嵌套的層次,一般來說,我們啟動第一個Shell時。  $SHLVL=1。如果在這個Shell中執行腳本,腳本中的$SHLVL=2 。

24、TMOUT  :用來設置腳本過期的時間,比如TMOUT=3,表示該腳本3秒后過期。

25、UID : 已登用戶的ID

26、USER :顯示當前用戶名字

4.設置PATH環境變量

PATH定義了命令行輸入命令的搜素路徑,如果找不到命令,它會產生一個錯誤:

wu@ubuntu:~$ myprog
myprog: command not found

可以添加新的搜素目錄到現有的PATH環境變量,無需從頭定義,PATH中的目錄之間是用冒號分隔的,所以你只需引用原來的PATH值,然后再給字符串添加新的目錄就行

5.可變數組

環境變量一個很好的功能就是它們可作為數組使用,要給某個環境變量設置多個值,可以把值放在括號里,值與值之間用空格隔開:

wu@ubuntu:~$ mytest=(one two three four five)
wu@ubuntu:~$ echo $mytest
one

只有第一個值顯示出來了。要引用一個單獨的數組元素,必須用代表它在數組中位置的數值索引值,數值要用方括號括起來:

wu@ubuntu:~$ echo ${mytest[2]}
three

要顯示整個數組變量,可用星號作為通配符放在索引值的位置:

wu@ubuntu:~$ echo ${mytest[*]}
one two three four five

你也可以改變某個索引位置的值:

wu@ubuntu:~$ mytest[2]=seven
wu@ubuntu:~$ echo ${mytest[*]}
one two seven four five

你甚至可以用unset命令來刪除數組中的某個值,但是要小心:

wu@ubuntu:~$ unset mytest[2]
wu@ubuntu:~$ echo ${mytest[*]}
one two four five
wu@ubuntu:~$ echo ${mytest[2]}

wu@ubuntu:~$ echo ${mytest[3]}
four

最后,可以在unset命令后跟上數組名來刪除整個數組:

wu@ubuntu:~$ unset mytest
wu@ubuntu:~$ echo ${mytest[*]}

wu@ubuntu:~$

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM