命令簡(jiǎn)述
一采桃、顯示環(huán)境變量TEST
echo $TEST
test
二懒熙、設(shè)置一個(gè)新的環(huán)境變量TEST
export TEST="Hello"
echo $TEST
Hello
三、使用env
命令顯示所有的環(huán)境變量
env
TEST=Hello
四普办、使用set
命令顯示所有本地定義的Shell
變量
set
TEST=Hello
五工扎、使用unset
命令來(lái)清除環(huán)境變量
清除環(huán)境變量的值用unset
命令。如果未指定值衔蹲,則該變量值將被設(shè)為NULL
肢娘。示例如下:
#增加一個(gè)環(huán)境變量TEST
export TEST="Test..."
#此命令如有輸出呈础,證明環(huán)境變量TEST已經(jīng)存在了
$ env|grep TEST
TEST=Test...
#刪除環(huán)境變量TEST
unset TEST
#此命令如沒有輸出,證明環(huán)境變量TEST已經(jīng)不存在了
$ env|grep TEST
六橱健、使用readonly命令設(shè)置只讀變量
如果使用了readonly
命令的話而钞,變量就不可以被修改或清除了。示例如下:
#增加一個(gè)環(huán)境變量TEST
export TEST="Test"
#將環(huán)境變量TEST設(shè)為只讀
$ readonly TEST
#會(huì)發(fā)現(xiàn)此變量不能被刪除
$ unset TEST
-bash: unset: TEST: cannot unset: readonly variable
#會(huì)發(fā)現(xiàn)此變量不能被修改
export TEST='NEW'
-bash: TEST: readonly variable
環(huán)境變量的設(shè)置位于/etc/profile
文件
如果需要增加新的環(huán)境變量可以添加至
export path=$path:/path1:/path2:/pahtN
基本概念
1. Linux 變量種類
按變量的生存周期來(lái)劃分拘荡,Linux
變量可分為兩類:
- 永久的:需要修改配置文件臼节,變量永久生效。
-
臨時(shí)的:使用
export
命令聲明即可珊皿,變量在關(guān)閉shell
時(shí)失效网缝。
2. 設(shè)置變量的三種方法
2.1 在/etc/profile
文件中添加變量【對(duì)所有用戶生效(永久的)】
用vim
在文件/etc/profile
文件中增加變量,該變量將會(huì)對(duì)Linux
下所有用戶有效蟋定,并且是“永久的”嫩海。
例如:編輯/etc/profile
文件溺欧,添加CLASSPATH
變量
# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想馬上生效,還要運(yùn)行
source /etc/profile
。不然只能在下次重進(jìn)此用戶時(shí)生效官册。
2.2 在用戶目錄下的.bash_profile
文件中增加變量【對(duì)單一用戶生效(永久的)】
用vim
在用戶目錄下的.bash_profile
文件中增加變量,改變量?jī)H會(huì)對(duì)當(dāng)前用戶有效瞒大,并且是“永久的”拣度。
例如:編輯guok
用戶目錄(/home/guok
)下的.bash_profile
$ vi /home/guok/.bash.profile
添加如下內(nèi)容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想馬上生效,還要運(yùn)行
source /home/guok/.bash_profile
蝇狼。不然只能在下次重進(jìn)此用戶時(shí)生效阅畴。
2.3 直接運(yùn)行export
命令定義變量【只對(duì)當(dāng)前shell
(BASH
)有效(臨時(shí)的)】
在shell
的命令行下直接使用[export
變量名=變量值] 定義變量,該變量只在當(dāng)前的shell
(BASH
)或其子shell
(BASH
)下是有效的迅耘,shell
關(guān)閉了贱枣,變量也就失效了,再打開新shell
時(shí)就沒有這個(gè)變量颤专,需要使用的話還需要重新定義纽哥。
3.環(huán)境變量的查看
3.1 使用echo
命令查看單個(gè)環(huán)境變量。例如:
echo $PATH
3.2 使用env
查看所有環(huán)境變量栖秕。例如:
env
3.3 使用set
查看所有本地定義的環(huán)境變量春塌。
unset
可以刪除指定的環(huán)境變量。
4. 常用的環(huán)境變量
-
PATH
決定了shell
將到哪些目錄中尋找命令或程序 -
HOME
當(dāng)前用戶主目錄 -
HISTSIZE
歷史記錄數(shù) -
LOGNAME
當(dāng)前用戶的登錄名 -
HOSTNAME
指主機(jī)的名稱 -
SHELL
當(dāng)前用戶Shell
類型 -
LANGUGE
語(yǔ)言相關(guān)的環(huán)境變量簇捍,多語(yǔ)言可以修改此環(huán)境變量 -
MAIL
當(dāng)前用戶的郵件存放目錄
特殊例子
當(dāng)應(yīng)用程序執(zhí)行時(shí)只壳,它接收一組環(huán)境變量∈钏埽可以使用 env
命令查看所有與終端相關(guān)的環(huán)境變量吼句。
對(duì)于進(jìn)程來(lái)說(shuō),其運(yùn)行時(shí)的環(huán)境變量可以使用下面的命令來(lái)查看:
cat /proc/$PID/environ
其中事格,將PID
設(shè)置成相關(guān)進(jìn)程的進(jìn)程ID
(PID
總是一個(gè)整數(shù))惕艳。
pgrep
命令:用來(lái)查找進(jìn)程的信息搞隐,通常會(huì)和kill
命令來(lái)連用,在指定條件下kill
問題進(jìn)程远搪。
使用pgrep
命令來(lái)查看進(jìn)程的 PID
號(hào)劣纲。
根據(jù)PID
號(hào)來(lái)獲取該進(jìn)程相關(guān)的環(huán)境變量。
export
命令用來(lái)設(shè)置環(huán)境變量终娃。至此之后味廊,從當(dāng)前shell
腳本執(zhí)行的任何應(yīng)用程序都會(huì)繼承這個(gè)變量。我們可以按照自己的需要棠耕,在執(zhí)行的應(yīng)用程序或者shell
腳本中導(dǎo)出特定的變量余佛。在默認(rèn)情況下,有很多標(biāo)準(zhǔn)環(huán)境變量可供shell
使用窍荧。
5. 登入系統(tǒng)環(huán)境變量讀取步驟
當(dāng)?shù)侨胂到y(tǒng)時(shí)候獲得一個(gè)shell
進(jìn)程時(shí)辉巡,讀取環(huán)境變量值有三步 :
首先讀入的是全局環(huán)境變量
/etc/profile
,然后根據(jù)其內(nèi)容讀取額外設(shè)定的文檔蕊退,如/etc/profile.d
和/etc/inputrc
然后根據(jù)登入的不同用戶帳號(hào)郊楣,去其
home
目錄讀取~/.bash_profile
,如果讀取不了就讀取~/.bash_login
瓤荔,這個(gè)也讀取不了才會(huì)讀取~/.profile
净蚤,這三個(gè)文檔設(shè)定基本上是一樣的,讀取有優(yōu)先關(guān)系然后在根據(jù)用戶帳號(hào)讀取
~/.bashrc
/etc/*
和~/.*
區(qū)別:
-
/etc/profile
输硝,/etc/bashrc
是系統(tǒng)全局環(huán)境變量設(shè)定 -
~/.profile
今瀑,~/.bashrc
是用戶home
目錄下的私有環(huán)境變量設(shè)定
~/.profile
與~/.bashrc
的區(qū)別:
-
~/.profile
可以設(shè)定本用戶專有的路徑,環(huán)境變量等点把,它只在登入的時(shí)候執(zhí)行一次 -
~/.bashrc
也是某用戶專有設(shè)定文檔橘荠,可以設(shè)定路徑,每次shell script
的執(zhí)行都會(huì)使用它一次