變量是計算機系統用于儲存可變值的資料類型,我們可以直接通過變量名稱來提取到對應的變量值。在 Linux 系統中,環境變量是用來定義系統運作環境的一些參數,比如每個使用者不同的家目錄(HOME)、郵件存放位置(MAIL)等。
值得一提的是,Linux 系統中環境變量的名稱一般都是大寫的,這是一種約定俗成的規範。
我們可以使用 env 指令來檢視到 Linux 系統中所有的環境變量,執行指令如下:
[root@localhost ~]# env
ORBIT_SOCKETDIR=/tmp/orbit-root
HOSTNAME=livecd.centos
GIO_LAUNCHED_DESKTOP_FILE_PID=2065
TERM=xterm
shell =/bin/bash
......
Linux 系統能夠正常運作并且為使用者提供服務,需要數百個環境變量來協同工作,但是,我們沒有必要逐一學習每個變量,這裡給大家列舉了 10 個非常重要的環境變量,如表 1 所示。
環境變量名稱 | 作用 |
HOME | 使用者的主目錄(也稱家目錄) |
SHELL | 使用者使用的 Shell 解釋器名稱 |
PATH | 定義指令行解釋器搜尋使用者執行指令的路徑 |
EDITOR | 使用者預設的文本解釋器 |
RANDOM | 生成一個随機數字 |
LANG | 系統語言、語系名稱 |
HISTSIZE | 輸出的曆史指令記錄條數 |
HISTFILESIZE | 儲存的曆史指令記錄條數 |
PS1 | Bash解釋器的提示符 |
郵件儲存路徑 |
Linux 作為一個多使用者多任務的作業系統,能夠為每個使用者提供獨立的、合适的工作運作環境,是以,一個相同的環境變量會因為使用者身份的不同而具有不同的值。
例如,使用下述指令來檢視 HOME 變量在不同使用者身份下都有哪些值:
[root@localhost ~]# echo $HOME
/root
[root@localhost ~]# su - user1 <--切換到 user1 使用者身份
[user1@localhost ~]$ echo $HOME
/home/user1
這裡的 su 指令可以臨時切換使用者身份,此指令的具體用法會在後續章節做詳細介紹。
其實,環境變量是由固定的變量名與使用者或系統設定的變量值兩部分組成的,我們完全可以自行建立環境變量來滿足工作需求。例如,設定一個名稱為 WORKDIR 的環境變量,友善使用者更輕松地進入一個層次較深的目錄,執行指令如下:
[root@localhost ~]# mkdir /home/work1
[root@localhost ~]# WORKDIR=/home/work1
[root@localhost ~]# cd $WORKDIR
[root@localhost work1]# pwd
/home/work1
但是,這樣的環境變量不具有全局性,作用範圍也有限,預設情況下不能被其他使用者使用。如果工作需要,可以使用 export 指令将其提升為全局環境變量,這樣其他使用者就可以使用它了:
[root@localhost work1]# su user1 <-- 切換到 user1,發現無法使用 WORKDIR 自定義變量
[user1@localhost ~]$ cd $WORKDIR
[user1@localhost ~]$ echo $WORKDIR
[user1@localhost ~]$ exit <--退出user1身份
[root@localhost work1]# export WORKDIR
[root@localhost work1]# su user1
[user1@localhost ~]$ cd $WORKDIR
[user1@localhost work1]$ pwd
/home/work1
十年磨一劍