Linux環(huán)境變量總結
Linux是一個(gè)多用戶(hù)的操作系統。多用戶(hù)意味著(zhù)每個(gè)用戶(hù)登錄系統后,都有自己專(zhuān)用的運行環(huán)境。而這個(gè)環(huán)境是由一組變量所定義,這組變量被稱(chēng)為環(huán)境變量。用戶(hù)可以對自己的環(huán)境變量進(jìn)行修改以達到對環(huán)境的要求。
設置環(huán)境變量的方法
對所有用戶(hù)生效的永久性變量
這類(lèi)變量對系統內的所有用戶(hù)都生效,所有用戶(hù)都可以使用這類(lèi)變量。作用范圍是整個(gè)系統。
此文件只在root下才能修改。
# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib
添加完成后新的環(huán)境變量不會(huì )立即生效,立即生效需要運行 source /etc/profile ,否則只能在下次重進(jìn)此用戶(hù)時(shí)才能生效。
對單一用戶(hù)生效的永久性變量
在用戶(hù)目錄下的.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 ,原則上講設置此類(lèi)環(huán)境變量時(shí)在這兩個(gè)文件任意一個(gè)里面添加都是可以的,這兩個(gè)文件的區別為:.bash_profile是交互式login方式進(jìn)入bash shell運行,.bashrc是交互式non-login方式進(jìn)入bash shell運行。
可以理解為.bash_profile文件只會(huì )在用戶(hù)登錄的時(shí)候讀取一次,而.bashrc在每次打開(kāi)終端進(jìn)行一次新的會(huì )話(huà)時(shí)都會(huì )讀取。
臨時(shí)有效的環(huán)境變量(只針對當前shell有效)
此類(lèi)環(huán)境變量只對當前的shell有效。當我們退出登錄或者關(guān)閉終端再重新打開(kāi)時(shí),這個(gè)環(huán)境變量就會(huì )消失。是臨時(shí)的。
設置方法:命令行下直接使用[export 變量名=變量值] 定義變量。
$ export NAME="rethink"
$ echo $NAME
rethink
設置環(huán)境變量常用命令
echo 用于打印顯示環(huán)境變量,如:echo $NAME;
export 用于設置新的環(huán)境變量,如:export NAME='rethink';
更新環(huán)境變量 更新環(huán)境變量直接重新賦值即可:NAME='test' (注意:變量名前不需要加$);
env 顯示當前用戶(hù)的變量;
set 顯示當前shell變量,shell變量包含用戶(hù)變量;
unset 刪除一個(gè)環(huán)境變量,如:unset NAME;
readonly 設置環(huán)境變量只讀,如:readonly NAME ,只讀變量unset無(wú)效。
常用環(huán)境變量
PATH
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
路徑之間用冒號分隔,這些路徑都是一些可以找到可執行程序的目錄列表。當我們輸入一個(gè)指令時(shí),shell會(huì )先檢查命令是否是系統內部命令,如果不是則會(huì )再去檢查此命令是否是一個(gè)應用程序,shell會(huì )試著(zhù)從PATH中尋找這些應用程序。
如果shell在這些路徑目錄里沒(méi)有找到可執行文件,就會(huì )報錯;若找到,系統將調用執行應用程序。通過(guò)設置PATH ,可以讓我們運行程序或指令更加方便。
將某個(gè)目錄路徑加入到PATH中,可以這樣寫(xiě):
$ 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)加上了我們當前所處目錄的路徑`
HOME
用戶(hù)的主工作目錄,即為用戶(hù)登錄到Linux系統中時(shí)的默認目錄。
$ whoami
rethink
$ echo $HOME
/home/rethink
HISTSIZE
保存歷史命令的條數。我們輸入的指令都會(huì )被系統保存下來(lái),這個(gè)環(huán)境變量記錄的就是保持指令的條數。一般為1000。
$ echo $HISTSIZE
1000
$ HISTSIZE=1001
$ echo $HISTSIZE
1001
歷史命令是被保存在內存中的,當退出或者登錄shell時(shí),會(huì )自動(dòng)保存或讀取我們可以通過(guò)history命令來(lái)查看??梢允褂梅?! 執行指定序號的歷史命令。例如,要執行第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
當前用戶(hù)登錄名。
$ echo $LOGNAME
rethink
HOSTNAME 主機名稱(chēng)。
$ echo $HOSTNAME
JDu4e00u53f7
SHELL
當前用戶(hù)使用的shell種類(lèi)。
$ echo $SHELL
/bin/bash