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