本文地址:http://www.CUOXin.com/archimedes/p/linux-envionment-variables.html,轉(zhuǎn)載請(qǐng)注明源地址。
1.什么是環(huán)境變量bash shell用一個(gè)稱作環(huán)境變量的特性來存儲(chǔ)有關(guān)shell會(huì)話和工作環(huán)境的信息,它允許你在內(nèi)存中存儲(chǔ)數(shù)據(jù),以便運(yùn)行在shell上的程序和腳本訪問
在bash shell中,環(huán)境變量分為兩類:全局變量和局部變量
(1)全局環(huán)境變量全局環(huán)境變量不僅對(duì)shell會(huì)話可見,對(duì)所有shell創(chuàng)建的子進(jìn)程中需要獲得父進(jìn)程信息的程序來說非常有用。Linux系統(tǒng)在你開始bash會(huì)話之前就設(shè)置了一些全局環(huán)境變量
系統(tǒng)環(huán)境變量的一律用全大寫字母以區(qū)別與普通用戶的環(huán)境變量
查看全局變量,可以使用PRintenv命令(由于結(jié)果太多,不寫出來)
要顯示單個(gè)環(huán)境變量,可以使用echo命令。當(dāng)引用環(huán)境變量時(shí),必須在環(huán)境變量的名稱前放置一個(gè)$符:
wu@Ubuntu:~/Ccode$ echo $HOME/home/wu
(2)局部環(huán)境變量局部環(huán)境變量只能在定義它們的進(jìn)程中可見,查看局部環(huán)境變量的列表有點(diǎn)復(fù)雜,在Linux系統(tǒng)中并沒有這樣的一個(gè)命令只顯示局部環(huán)境變量
set命令會(huì)顯示某個(gè)特定進(jìn)程設(shè)置的所有環(huán)境變量,當(dāng)然也包括全局變量
2.設(shè)置環(huán)境變量(1)設(shè)置局部環(huán)境變量一旦啟動(dòng)了bash shell,你就能創(chuàng)建在這個(gè)shell進(jìn)程內(nèi)可見的局部變量了,你可以通過等號(hào)來給環(huán)境變量賦值,值可以是數(shù)值或字符串:
wu@ubuntu:~$ test=testingwu@ubuntu:~$ echo $testtesting
如果要給變量賦一個(gè)含有空格的字符串,必須用單引號(hào)來界定字符串的開始和結(jié)尾:
wu@ubuntu:~$ test=testing a long stringa: command not foundwu@ubuntu:~$ test='testing a long string'wu@ubuntu:~$ echo $testtesting a long string
(2)設(shè)置全局環(huán)境變量創(chuàng)建全局環(huán)境變量的方法是先創(chuàng)建一個(gè)局部環(huán)境變量,然后再把它導(dǎo)出到全局環(huán)境中
這個(gè)過程通過export命令來完成:
wu@ubuntu:~$ echo $testtesting a long stringwu@ubuntu:~$ export testwu@ubuntu:~$ bashwu@ubuntu:~$ echo $testtesting a long string
(3)刪除環(huán)境變量可以使用unset命令來刪除環(huán)境變量:
wu@ubuntu:~$ echo $testtesting a long stringwu@ubuntu:~$ unset testwu@ubuntu:~$ echo $test
wu@ubuntu:~$
3.默認(rèn)shell環(huán)境變量1、BASH:記錄當(dāng)前bash shell的路徑。
2、BASH_SUBSHELL :記錄當(dāng)前子shell的層次。BASH_SUBSHELL是從0開始計(jì)數(shù)的整數(shù)。
3、BASH_VERSINFO :是一個(gè)數(shù)組包含六個(gè)元素,這六個(gè)元素顯示bash的版本信息。
4、BASH_VERSION :顯示shell版本的信息。
5、DIRSTACK:記錄了棧頂?shù)哪夸浿担踔禐榭铡?/p>
6、GLOBLGNORE :是由冒號(hào)分割的模式列表,表示通配時(shí)忽略的文件名集合。
7、GROUPS:記錄當(dāng)前用戶所屬的組。
8、HOME:記錄當(dāng)前用戶的家目錄,由/etc/passwd的倒數(shù)第二個(gè)域決定。
9、HOSTNAME:記錄主機(jī)名。
10、HOSTTYPE和MACHTYPE :都是記錄系統(tǒng)的硬件架構(gòu)。
11、IFS :用于設(shè)置指定shell域分隔符,默認(rèn)情況下為空格。
12、OLDPWD :記錄舊的工作目錄。
13、OSTYPE :記錄操作系統(tǒng)類型。
14、PATH :環(huán)境變量,顯示當(dāng)前PATH環(huán)境變量的內(nèi)容。
15、PPID :是創(chuàng)建當(dāng)前進(jìn)程的進(jìn)程號(hào),即當(dāng)前進(jìn)程的父進(jìn)程號(hào)
16、PS1 :提示符變量,用于設(shè)置提示符格式,用于設(shè)置一級(jí)shell提示符環(huán)境變量。
17、PS2 :用于設(shè)置二級(jí)shell提示符環(huán)境變量。
18、PWD :記錄當(dāng)前路徑
19、REPLY :REPLY變量與read和select有關(guān)。
20、SECONDS:記錄腳本從開始到結(jié)束耗費(fèi)的時(shí)間。
21、SHELL :顯示當(dāng)前所用的shell
22、SHELLOPTS :記錄了處于“開”狀態(tài)的shell選項(xiàng)列表,它只是一個(gè)只讀變量。
23、SHLVL :記錄了bash嵌套的層次,一般來說,我們啟動(dòng)第一個(gè)Shell時(shí)。 $SHLVL=1。如果在這個(gè)Shell中執(zhí)行腳本,腳本中的$SHLVL=2 。
24、TMOUT :用來設(shè)置腳本過期的時(shí)間,比如TMOUT=3,表示該腳本3秒后過期。
25、UID : 已登用戶的ID
26、USER :顯示當(dāng)前用戶名字
4.設(shè)置PATH環(huán)境變量PATH定義了命令行輸入命令的搜素路徑,如果找不到命令,它會(huì)產(chǎn)生一個(gè)錯(cuò)誤:
wu@ubuntu:~$ myprogmyprog: command not found
可以添加新的搜素目錄到現(xiàn)有的PATH環(huán)境變量,無需從頭定義,PATH中的目錄之間是用冒號(hào)分隔的,所以你只需引用原來的PATH值,然后再給字符串添加新的目錄就行
5.可變數(shù)組環(huán)境變量一個(gè)很好的功能就是它們可作為數(shù)組使用,要給某個(gè)環(huán)境變量設(shè)置多個(gè)值,可以把值放在括號(hào)里,值與值之間用空格隔開:
wu@ubuntu:~$ mytest=(one two three four five)wu@ubuntu:~$ echo $mytestone
只有第一個(gè)值顯示出來了。要引用一個(gè)單獨(dú)的數(shù)組元素,必須用代表它在數(shù)組中位置的數(shù)值索引值,數(shù)值要用方括號(hào)括起來:
wu@ubuntu:~$ echo ${mytest[2]}three
要顯示整個(gè)數(shù)組變量,可用星號(hào)作為通配符放在索引值的位置:
wu@ubuntu:~$ echo ${mytest[*]}one two three four five
你也可以改變某個(gè)索引位置的值:
wu@ubuntu:~$ mytest[2]=sevenwu@ubuntu:~$ echo ${mytest[*]}one two seven four five
你甚至可以用unset命令來刪除數(shù)組中的某個(gè)值,但是要小心:
wu@ubuntu:~$ unset mytest[2]wu@ubuntu:~$ echo ${mytest[*]}one two four fivewu@ubuntu:~$ echo ${mytest[2]}
wu@ubuntu:~$ echo ${mytest[3]}four
最后,可以在unset命令后跟上數(shù)組名來刪除整個(gè)數(shù)組:
wu@ubuntu:~$ unset mytestwu@ubuntu:~$ echo ${mytest[*]}
wu@ubuntu:~$
新聞熱點(diǎn)
疑難解答
圖片精選