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