【RHEL 7】重要的環境變數
命令的執行過程
為了更好地幫助大家理解變數的作用,劉遄老師給大家舉個例子。前文中曾經講到,在Linux系統中一切都是檔案,Linux命令也不例外。那麼,在使用者執行了一條命令之後,Linux系統中到底發生了什麼事情呢?簡單來說,命令在Linux中的執行分為4個步驟。
第1步:判斷使用者是否以絕對路徑或相對路徑的方式輸入命令(如/bin/ls),如果是的話則直接執行。
第2步:Linux系統檢查使用者輸入的命令是否為“別名命令”,即用一個自定義的命令名稱來替換原本的命令名稱。
第3步:Bash直譯器判斷使用者輸入的是內部命令還是外部命令。內部命令是直譯器內部的指令,會被直接執行;
而使用者在絕大部分時間輸入的是外部命令,這些命令交由步驟4繼續處理。可以使用“type命令名稱”來判斷使用者輸入的命令是內部命令還是外部命令。
第4步:系統在多個路徑中查詢使用者輸入的命令檔案,而定義這些路徑的變數叫作PATH,可以簡單地把它理解成是“直譯器的小助手”,作用是告訴Bash直譯器待執行的命令可能存放的位置,然後Bash直譯器就會乖乖地在這些位置中逐個查詢。PATH是由多個路徑值組成的變數,每個路徑值之間用冒號間隔,對這些路徑的增加和刪除操作將影響到Bash直譯器對Linux命令的查詢。
[[email protected] ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
[[email protected] ~]# PATH=$PATH:/root/bin
[ [email protected] ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
重要的環境變數
讀者從前面的PATH變數示例中是否也感覺到環境變數特別有用呢。我們可以使用env命令來檢視到Linux系統中所有的環境變數,而劉遄老師為您精挑細選出了最重要的10個環境變數,如表所示。
變數名稱 | 作用 |
HOME | 使用者的主目錄(即家目錄) |
SHELL | 使用者在使用的Shell直譯器名稱 |
HISTSIZE | 輸出的歷史命令記錄條數 |
HISTFILESIZE | 儲存的歷史命令記錄條數 |
郵件儲存路徑 | |
LANG | 系統語言、語系名稱 |
RANDOM | 生成一個隨機數字 |
PS1 | Bash直譯器的提示符 |
PATH | 定義直譯器搜尋使用者執行命令的路徑 |
EDITOR | 使用者預設的文字編輯器 |
Linux作為一個多使用者多工的作業系統,能夠為每個使用者提供獨立的、合適的工作執行環境,因此,一個相同的變數會因為使用者身份的不同而具有不同的值。例如,我們使用下述命令來檢視HOME變數在不同使用者身份下都有哪些值
[[email protected] ~]# echo $HOME
/root
[[email protected] ~]# su - linuxprobe
Last login: Fri Feb 27 19:49:57 CST 2017 on pts/0
[[email protected] ~]$ echo $HOME
/home/linuxprobe
使用者變數
其實變數是由固定的變數名與使用者或系統設定的變數值兩部分組成的,我們完全可以自行建立變數,來滿足工作需求。
但是,這樣的變數不具有全域性性,作用範圍也有限,預設情況下不能被其他使用者使用。
建立使用者變數
[[email protected] ~]# mkdir /home/workdir
[[email protected] ~]# WORKDIR=/home/workdir
[[email protected] ~]# cd $WORKDIR
[[email protected] workdir]# pwd
/home/workdir
設定全域性變數
如果工作需要,可以使用export命令將其提升為全域性變數,這樣其他使用者也就可以使用它了
export WORKDIR