環境變數
環境變數是具有特殊名字的一個特定物件,包含了一個或多個應用程式執行所需的資訊。(例如PATH,可執行程式的搜尋路徑,當要求系統執行一個程式,而沒告訴系統它的具體路徑時,系統就要在PTAH值的路徑中尋找此程式,找到去執行)簡單說,就是指定一個目錄,執行軟體的時候,相關的程式將會按照該目錄尋找相關檔案。
分類
環境變數不僅有PATH,系統的環境變數還有:
C_INCLUDE_PATH 標頭檔案的搜尋路徑
LIBRARY_PATH靜態庫搜尋路徑(編譯時包含)
LD_LIBRARY_PATH動態庫搜尋路徑(連結時包含)
環境變數可以分成使用者自定義的環境變數和系統級別的環境變數。
- 使用者級別環境變數定義檔案:~/.bashrc、~/.profile(部分系統為:~/.bash_profile)
- 系統級別環境變數定義檔案:/etc/bashrc、/etc/profile(部分系統為:/etc/bash_profile)、/etc/environment
另外在使用者環境變數中,系統會首先讀取 ~/.bash_profile(或者 ~/.profile)檔案,如果沒有該檔案則讀取 ~/.bash_login,根據這些檔案中內容再去讀取 ~/.bashrc。
檢視環境變數
- 使用echo命令檢視單個環境變數。例如:
echo $PATH
- 使用env檢視所有環境變數。例如:
env
- 使用set檢視所有本地定義的環境變數。
設定環境變數
- 永久的:需要修改配置檔案,變數永久生效。對所有的使用者的都起作用的環境變數。
修改 /etc/profile 檔案,如果你的計算機僅僅作為開發使用時推存使用這種方法,因為所有使用者的shell都有權使用這個環境變數,可能會給系統帶來安全性問題。這裡是針對所有的使用者的,所有的shell
vi /etc/profile
# 在 /etc/profile 的最下面新增:
export PATH="$PATH:/NEW_PATH"
使用相同的使用者開啟新的終端時或者手動source ~/.bash_profile生效。
- 臨時的:使用export命令宣告即可,變數在關閉shell時失效。只對當前的shell 起作用的環境變數。
在控制檯中設定,他只對當前的shell 起作用,關閉shell或使用其他shell是無效的:
直接控制檯中輸入 :
$PATH="$PATH":/NEW_PATH (關閉shell Path會還原為原來的path)
設定後會立即生效,且僅對當前使用者有效,當前終端有效,當視窗關閉後無效。
- 指定使用者的:修改bashrc檔案。針對當前特定的使用者起作用的環境變數。
vi ~/.bashrc
# 在下面新增
Export PATH="$PATH:/NEW_PATH"
使用相同的使用者開啟新的終端時或者手動執行source ~/.bashrc後生效,且僅對當前使用者有效。
程式執行
如果程式設定了環境變數,則直接輸入程式名便可以執行
如果程式未設定環境變數,但是在當前路徑下,執行時需要在前面新增 ./ 表示當前路徑,例如:./python3
如果程式未設定環境變數,可以使用全路徑進行執行,例如:/xx/xx/xx
常用的環境變數
PATH 決定了shell將到哪些目錄中尋找命令或程式
HOME 當前使用者主目錄
HISTSIZE 歷史記錄數
LOGNAME 當前使用者的登入名
HOSTNAME 指主機的名稱
SHELL 當前使用者Shell型別
LANGUGE 語言相關的環境變數,多語言可以修改此環境變數
MAIL 當前使用者的郵件存放目錄
PS1 基本提示符,對於root使用者是#,對於普通使用者是$