
鏈接:https://www.zhangjunbk.com/article/590
linux作為一個(gè)多用戶操作系統(tǒng),每個(gè)用戶登錄系統(tǒng)后都擁有自己的專用運(yùn)行環(huán)境。這個(gè)環(huán)境由一組變量定義,稱為環(huán)境變量。用戶可以通過修改這些變量來滿足自己的環(huán)境需求。
設(shè)置環(huán)境變量的方法
- 對所有用戶生效的永久性變量
這些變量對系統(tǒng)內(nèi)的所有用戶都有效,所有用戶都能夠使用。其作用范圍覆蓋整個(gè)系統(tǒng)。
要修改這些變量,需要在root權(quán)限下操作。
#?vi?/etc/profile export?CLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib
添加完成后新的環(huán)境變量不會(huì)立即生效,立即生效需要運(yùn)行 source /etc/profile ,否則只能在下次重進(jìn)此用戶時(shí)才能生效。
- 對單一用戶生效的永久性變量
在用戶目錄下的.bash_profile 文件中添加變量,該文件是隱藏文件,可使用ll -a查看:
$?whoami? rethink $?vi?/home/rethink/.bash_profile export?CLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib? $?source?/home/rethink/.bash_profile
在上圖中用紅框框住了兩個(gè)文件:.bashrc 和.bash_profile ,原則上講設(shè)置此類環(huán)境變量時(shí)在這兩個(gè)文件任意一個(gè)里面添加都是可以的,這兩個(gè)文件的區(qū)別為:.bash_profile是交互式login方式進(jìn)入bash shell運(yùn)行,.bashrc是交互式non-login方式進(jìn)入bash shell運(yùn)行。
可以理解為.bash_profile文件只會(huì)在用戶登錄的時(shí)候讀取一次,而.bashrc在每次打開終端進(jìn)行一次新的會(huì)話時(shí)都會(huì)讀取。
臨時(shí)有效的環(huán)境變量(只針對當(dāng)前shell有效)
此類環(huán)境變量只對當(dāng)前的shell有效。當(dāng)我們退出登錄或者關(guān)閉終端再重新打開時(shí),這個(gè)環(huán)境變量就會(huì)消失。是臨時(shí)的。
設(shè)置方法:命令行下直接使用[export 變量名=變量值] 定義變量。
$?export?NAME="rethink" $?echo?$NAME rethink
設(shè)置環(huán)境變量常用命令
- echo 用于打印顯示環(huán)境變量,如:echo $NAME;
- export 用于設(shè)置新的環(huán)境變量,如:export NAME=’rethink’;
更新環(huán)境變量 更新環(huán)境變量直接重新賦值即可:NAME=’test’ (注意:變量名前不需要加$);
- env 顯示當(dāng)前用戶的變量;
- set 顯示當(dāng)前shell變量,shell變量包含用戶變量;
- unset 刪除一個(gè)環(huán)境變量,如:unset NAME;
- readonly 設(shè)置環(huán)境變量只讀,如:readonly NAME ,只讀變量unset無效。
常用環(huán)境變量
PATH #?echo?$PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
路徑之間用冒號分隔,這些路徑都是一些可以找到可執(zhí)行程序的目錄列表。當(dāng)我們輸入一個(gè)指令時(shí),shell會(huì)先檢查命令是否是系統(tǒng)內(nèi)部命令,如果不是則會(huì)再去檢查此命令是否是一個(gè)應(yīng)用程序,shell會(huì)試著從PATH中尋找這些應(yīng)用程序。
如果shell在這些路徑目錄里沒有找到可執(zhí)行文件,就會(huì)報(bào)錯(cuò);若找到,系統(tǒng)將調(diào)用執(zhí)行應(yīng)用程序。通過設(shè)置PATH ,可以讓我們運(yùn)行程序或指令更加方便。
將某個(gè)目錄路徑加入到PATH中,可以這樣寫:
$?pwd /root/docker/httpd $?export?PATH=$PATH:$PWD $?echo?$PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/docker/httpd `可以看到在PATH后面已經(jīng)加上了我們當(dāng)前所處目錄的路徑`
- HOME
用戶的主工作目錄,即為用戶登錄到Linux系統(tǒng)中時(shí)的默認(rèn)目錄。
$?whoami rethink $?echo?$HOME /home/rethink
- HISTSIZE
保存歷史命令的條數(shù)。我們輸入的指令都會(huì)被系統(tǒng)保存下來,這個(gè)環(huán)境變量記錄的就是保持指令的條數(shù)。一般為1000。
$?echo?$HISTSIZE 1000 $?HISTSIZE=1001 $?echo?$HISTSIZE 1001
歷史命令是被保存在內(nèi)存中的,當(dāng)退出或者登錄shell時(shí),會(huì)自動(dòng)保存或讀取我們可以通過history命令來查看。可以使用符號 ! 執(zhí)行指定序號的歷史命令。例如,要執(zhí)行第2個(gè)歷史命令,則輸入!2。
$?history?5 ???59??ls ???60??who ???61??history?|?head?-n?5 ???62??who?am?i ???63??history?5 $?!62 who?am?i root?????pts/0????????2018-04-04?11:00?(101.81.92.18)
- LOGNAME
當(dāng)前用戶登錄名。
$?echo?$LOGNAME rethink
- HOSTNAME 主機(jī)名稱。
$?echo?$HOSTNAME JDu4e00u53f7
- SHELL
當(dāng)前用戶使用的shell種類。
$?echo?$SHELL /bin/bash