1.概述
Linux是一個(gè)多用戶的操作系統(tǒng)。多用戶意味著每個(gè)用戶登錄系統(tǒng)后,都有自己專用的運(yùn)行環(huán)境。而這個(gè)環(huán)境是由一組變量所定義,這組變量被稱為環(huán)境變量。用戶可以對(duì)自己的環(huán)境變量進(jìn)行修改以達(dá)到對(duì)環(huán)境的要求。環(huán)境變量是和Shell緊密相關(guān)的,它是通過(guò)Shell命令來(lái)設(shè)置的。環(huán)境變量又可以被所有當(dāng)前用戶所運(yùn)行 的程序所使用。對(duì)于bash來(lái)說(shuō),可以通過(guò)變量名來(lái)訪問(wèn)相應(yīng)的環(huán)境變量。
2.顯示
使用env命令或者printenv命令可以察看所有環(huán)境變量。
使用echo顯示特定環(huán)境變量值,eg:
?
$?echo?$HOME /home/admin
?
3.設(shè)置一個(gè)新的環(huán)境變量
?
$?export?NAME=?"?Example?" $?echo?$NAME Example
?
4.使用unset命令來(lái)清除環(huán)境變量
?
$?unset?NAME $?echo?$NAME
?
5.使用readonly命令設(shè)置只讀變量(設(shè)置為只讀屬性后,其值將不可變,直到進(jìn)程結(jié)束)
?
$?export?NAME=?"?Example?" $?readonly?NAME $?unset?NAME -bash:?unset:?NAME:?cannot?unset:?readonly?variable $?NAME=?"?New?"?#會(huì)發(fā)現(xiàn)此也變量不能被修改 -bash:?TEST:?readonly?variable
?
6.在C程序中訪問(wèn)和設(shè)置環(huán)境變量
對(duì)于C程序的用戶來(lái)說(shuō),可以使用下列三個(gè)函數(shù)來(lái)設(shè)置或訪問(wèn)一個(gè)環(huán)境變量:
getenv()訪問(wèn)一個(gè)環(huán)境變量。輸入參數(shù)是需要訪問(wèn)的變量名字,返回值是一個(gè)字符串。如果所訪問(wèn)的環(huán)境變量不存在,則會(huì)返回NULL
setenv()在程序里面設(shè)置某個(gè)環(huán)境變量的函數(shù)
unsetenv()清除某個(gè)特定的環(huán)境變量的函數(shù)
另外,還有一個(gè)全局的指針變量environ,它指向的是包含所有的環(huán)境變量的一個(gè)列表。下面的程序可以打印出當(dāng)前運(yùn)行環(huán)境里面的所有環(huán)境變量:
?
#include extern?char**environ; int?main?() { char**var; for?(var?=environ;*var?!=NULL;++var) printf?(?"?%s? ?"?,*var); return?0; }
?
7.修改系統(tǒng)配置文件
通過(guò)修改一些相關(guān)的環(huán)境定義文件來(lái)修改環(huán)境變量,與環(huán)境相關(guān)的文件有/etc/profile(root用戶)和~/.bash_profile(普通用戶,在自己的目錄下,隱藏文件,如果沒(méi)有可以新建)等。修改完畢后重新登錄一次或運(yùn)行命令source xxx就生效了。
8.常見(jiàn)的環(huán)境變量
PATH 決定了shell將到哪些目錄中尋找命令或程序
HOME 當(dāng)前用戶主目錄
TERM 終端的類型。
UID 當(dāng)前用戶的識(shí)別字,取值是由數(shù)位構(gòu)成的字串。
PWD 當(dāng)前工作目錄的絕對(duì)路徑名,該變量的取值隨cd命令的使用而變化。
HISTSIZE 歷史記錄數(shù)
LOGNAME 當(dāng)前用戶的登錄名
HOSTNAME 指主機(jī)的名稱
SHELL 前用戶Shell類型
LANGUGE 語(yǔ)言相關(guān)的環(huán)境變量,多語(yǔ)言可以修改此環(huán)境變量
MAIL 當(dāng)前用戶的郵件存放目錄
PS1 shell命令行基本提示符,對(duì)于root用戶是#,對(duì)于普通用戶是$
PS2 附屬提示符,默認(rèn)是“>”
評(píng)論