定制Linux操作系統的環(huán)境變量
Linux是一個(gè)多用戶(hù)的操作系統。每個(gè)用戶(hù)登錄系統后,都會(huì )有一個(gè)專(zhuān)用的運行環(huán)境。通常每個(gè)用戶(hù)默認的環(huán)境都是相同的,這個(gè)默認環(huán)境實(shí)際上就是一組環(huán)境變量的定義。用戶(hù)可以對自己的運行環(huán)境進(jìn)行定制,其方法就是修改相應的系統環(huán)境變量。
常見(jiàn)的環(huán)境變量
對于PATH和HOME等環(huán)境變量大家都不陌生。除此之外,還有下面一些常見(jiàn)環(huán)境變量。
◆ HISTSIZE是指保存歷史命令記錄的條數。
◆ LOGNAME是指當前用戶(hù)的登錄名。
◆ HOSTNAME是指主機的名稱(chēng),許多應用程序如果要用到主機名的話(huà),通常是從這個(gè)環(huán)境變量中來(lái)取得的。
◆ SHELL是指當前用戶(hù)用的是哪種Shell。
◆ LANG/LANGUGE是和語(yǔ)言相關(guān)的環(huán)境變量,使用多種語(yǔ)言的用戶(hù)可以修改此環(huán)境變量。
◆ MAIL是指當前用戶(hù)的郵件存放目錄。
◆ PS1是基本提示符,對于root用戶(hù)是#,對于普通用戶(hù)是$。PS2是附屬提示符,默認是“>”??梢酝ㄟ^(guò)修改此環(huán)境變量來(lái)修改當前的命令符,比如下列命令會(huì )將提示符修改成字符串“Hello,My NewPrompt :) ”。
# PS1=" Hello,My NewPrompt :) "
Hello,My NewPrompt :)
除了這些常見(jiàn)的環(huán)境變量,許多應用程序在安裝時(shí)也會(huì )增加一些環(huán)境變量,比如使用Java就要設置JAVA_HOME和CLASSPATH等,而安裝五筆輸入法會(huì )增加環(huán)境變量"XMODIFIERS=@im=fcitx"等。
定制環(huán)境變量
環(huán)境變量是和Shell緊密相關(guān)的,用戶(hù)登錄系統后就啟動(dòng)了一個(gè)Shell。對于Linux來(lái)說(shuō)一般是bash,但也可以重新設定或切換到其它的 Shell。環(huán)境變量是通過(guò)Shell命令來(lái)設置的,設置好的環(huán)境變量又可以被所有當前用戶(hù)所運行的程序所使用。對于bash這個(gè)Shell程序來(lái)說(shuō),可以通過(guò)變量名來(lái)訪(fǎng)問(wèn)相應的環(huán)境變量,通過(guò)export來(lái)設置環(huán)境變量。下面通過(guò)幾個(gè)實(shí)例來(lái)說(shuō)明。
1. 顯示環(huán)境變量HOME
$ echo $HOME
/home/terry
2. 設置一個(gè)新的環(huán)境變量WELCOME
$ export WELCOME="Hello!"
$ echo $WELCOME
Hello!
3. 使用env命令顯示所有的環(huán)境變量
$ env
HOSTNAME=terry.mykms.org
PVM_RSH=/usr/bin/rsh
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
...
4. 使用set命令顯示所有本地定義的Shell變量
$ set
BASH=/bin/bash
BASH_VERSINFO=([0]="2"[1]="05b"[2]="0"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")
BASH_VERSION='2.05b.0(1)-release'
COLORS=/etc/DIR_COLORS.xterm
COLUMNS=80
DIRSTACK=()
DISPLAY=:0.0
...
5. 使用unset命令來(lái)清除環(huán)境變量
set可以設置某個(gè)環(huán)境變量的值。清除環(huán)境變量的值用unset命令。如果未指定值,則該變量值將被設為NULL。示例如下:
$ export TEST="Test..." #增加一個(gè)環(huán)境變量TEST
$ env|grep TEST #此命令有輸入,證明環(huán)境變量TEST已經(jīng)存在了
TEST=Test...
$ unset $TEST #刪除環(huán)境變量TEST
$ env|grep TEST #此命令沒(méi)有輸出,證明環(huán)境變量TEST已經(jīng)存在了
6. 使用readonly命令設置只讀變量
如果使用了readonly命令的話(huà),變量就不可以被修改或清除了。示例如下:
$ export TEST="Test..." #增加一個(gè)環(huán)境變量TEST
$ readonly TEST #將環(huán)境變量TEST設為只讀
$ unset TEST #會(huì )發(fā)現此變量不能被刪除
-bash: unset: TEST: cannot unset: readonly variable
$ TEST="New" #會(huì )發(fā)現此也變量不能被修改
-bash: TEST: readonly variable
7. 用C程序來(lái)訪(fǎng)問(wèn)和設置環(huán)境變量
對于C程序的用戶(hù)來(lái)說(shuō),可以使用下列三個(gè)函數來(lái)設置或訪(fǎng)問(wèn)一個(gè)環(huán)境變量。
◆ getenv()訪(fǎng)問(wèn)一個(gè)環(huán)境變量。輸入參數是需要訪(fǎng)問(wèn)的變量名字,返回值是一個(gè)字符串。如果所訪(fǎng)問(wèn)的環(huán)境變量不存在,則會(huì )返回NULL。
◆ setenv()在程序里面設置某個(gè)環(huán)境變量的函數。
◆ unsetenv()清除某個(gè)特定的環(huán)境變量的函數。
另外,還有一個(gè)指針變量environ,它指向的是包含所有的環(huán)境變量的一個(gè)列表。下面的程序可以打印出當前運行環(huán)境里面的所有環(huán)境變量:
|
還可以通過(guò)修改一些相關(guān)的環(huán)境定義文件來(lái)修改環(huán)境變量,比如對于Red Hat等Linux發(fā)行版本,與環(huán)境相關(guān)的文件有/etc/profile和~/.bashrc等。修改完畢后重新登錄一次就生效了。
linux相關(guān)文章:linux教程
評論