linux 系統中如何修改環境變量
linux 系統中如何修改環境變量
shell 的週期
- 用戶登入到 linux 系統後,系統將啟動一個用戶的 shell,在這個 shell 中,可以使用 shell 命令或聲明變量,也可以創建並運行 shell 腳本程序
- 運行 shell 腳本時,如果使用 sh/bash 指令,系統將創建一個子 shell。此時,系統中將有兩個 shell,一個是登入時系統的 shell,另一個是系統為了運行腳本程序創建的 shell
- 當一個腳本程序運行完畢,他的腳本將中止,可以返回到該腳本之前的 shell
- 用戶可以有很多 shell,每個 shell 都是有某個 shell(稱為父 shell)派生
shell 並非一個個終端(terminal),在一個終端當中,可以開很多 shell
環境變量的週期
- 在 shell 中執行時,會提供一組環境變量
- 當子 shell 中定義的變量只在該子 shell 內有效,如果在一個 shell 腳本程序中定義了一個變量,當該腳本程序運行時,這定義只在該腳本程序內的一個局部變量,其他的 shell 不能引用它
- 要使某個變量的值可以在其他 shell 中被改變,可以使用 export 命令對已定義的變量進行輸出。export 命令將使系統在創建每一新的 shell 時定義這個變量的一個拷貝。這個過程稱為
變量輸出
shell 與環境變量
- export 指令將自定義變量變成環境變量
- 執行腳本時,會開啟一個子 shell 環境,將父 shell 的系統變量複製到子 shell,不會複製父 shell 的自定義變量
- 子 shell 中定義的系統變量,不能在父 shell 中訪問
在 Ubuntu 中有如下幾個檔案可以設定環境變數
- /etc/profile: 在
登入時,作業系統定製使用者環境時使用的第一個檔案,此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行 - /etc/environment: 在
登入時,作業系統使用的第二個檔案,系統在讀取用戶的 profile 前,設定環境檔案的環境變數 - ~/.bash_profile: 在
登入時用到的第三個檔案是 .profile 文件,每個用戶可使用該檔案輸入專用於自己使用的 shell 資訊,當用戶登入時,該檔案僅僅執行一次 預設情況下,他設定環境變量,執行使用者的 .bashrc 檔案 /etc/bashrc: 為每一個執行 bash shell 的使用者執行此檔案。當 bash shell 被開啟時,該檔案被讀取 - ~/.bashrc: 該檔案包含專用於你的 bash shell 的 bash 信息,當
登入時以及每次開啟新的 shell 時,該該檔案被讀取
環境變量的優先順序
1 > 2 > 3
參考資料
export
- 用於設置或顯示環境變量。
- 在 shell 中執行程序時,shell 會提供一組環境變量。
- export 可新增,修改或刪除環境變量,供後續執行的程序使用。
- export 的效力僅及於該此登入操作。
語法
export 導出[-fnp] [變量名稱]=[變量設置值] TODO(del)
參數說明
- -f 代表[變量名稱]中的函數名稱
- -n 刪除指定的變量。變量實際上不會被刪除,只是後續的指令的執行環境不會輸出 TODO(del)
- -p 列出所有的 shell 賦予程序的環境變量
範例
定義環境變量
export MYENV
定義環境變量並賦值
export MYENV=0
列出指定當前所有環境變量
export -p MYENV
輸出
export MYENV=0
列出當前所有環境變量
export -p
輸出
export MYENV=0
declare -x HOME=“/root“
declare -x LANG=“zh_CN.UTF-8“
declare -x LANGUAGE=“zh_CN:zh“
declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“
declare -x LESSOPEN=“| /usr/bin/lesspipe %s“
......
參考資料
https://www.runoob.com/linux/linux-comm-export.html
unset
刪除環境變量
語法
unset [變量名稱]
範例
刪除環境變量
export MYENV
最根本的設置:更改變量的配置文件
- export 只能作用在當前 shell 與子 shell
- 用戶登出或重新開機後,所有使用 export 設定的環境變量都會失效
修改 profile 文件
vi /etc/profile # 為系統級設定
or
vi ~/.bash_profile # 為用戶級設定
檔案中加入
export PATH="$PATH:$HOME/bin"
修改 .bashrc 文件
vi /etc/.bashrc # 為系統級設定
or
vi ~/.bashrc # 為用戶級設定
檔案中加入
export PATH="$PATH:$HOME/bin"
source
通過 echo 命令顯示用戶變量
echo $PATH
通過 env 命令顯示用戶變量
env | grep PATH
延伸閱讀
https://www.cntofu.com/book/46/linux_system/1517.md https://www.cnblogs.com/pcat/p/5467188.html http://linux.vbird.org/linux_basic/0320bash.php#fig10.4.1