點擊左上方藍色“一口Linux”,選擇“設為星標”

環境變量(environment variables)一般是指在操作系統中用來指定操作系統運行環境的一些參數。
環境變量本質就是一張表,保存在內存當中。
該表在用戶登錄系統的時候,給用戶生成的特定的環境變量表。
環境變量的主要用途:
按生命周期分:
按作用域分:
查看指定環境變量的值
查看當前用戶全部的環境變量。
export: 設置一個新的環境變量
也可以顯示當前系統定義的所有環境變量。

set: 顯示本地定義的shell變量和環境變量

unset: 取消本地變量和環境變量
printenv 環境變量名:查看指定環境變量的值。
HOME:指定用戶的主工作目錄(即用戶登陸到Linux系統中時,默認的目錄)。
PWD:顯示當前目錄。
SHELL:當前用戶用的是哪種Shell。
HISTSIZE:保存歷史命令記錄的條數。
HOSTNAME:主機的名稱,應用程序如果要用到主機名的話,通常是從這個環境變量中取得。
LOGNAME:當前用戶的登錄名。
LANG/LANGUGE:和語言相關的環境變量,使用多種語言的用戶可以修改此環境變量。
PATH表示可執行程序的搜索目錄,可執行程序包括Linux系統命令和用戶的應用程序。
我們都知道之所以要加上 ./ ,是因為在程序運行時,需要說明該可執行程序所處的路徑,執行一個命令的前提是先找到它。
如果我們愿意,也可以使用絕對路徑來說明。
接下來我們思考一下為什么同為可執行程序的 ls 、 pwd 等等諸多指令在使用時不需要加 ./ 來說明其所處路徑呢?
這是因為在系統中存在一個環境變量幫助我們在特定路徑下搜索這些默認指令,這個環境變量叫做 PATH 。
如果可執行程序的目錄不在PATH指定的目錄中,執行時需要指定目錄,這就是執行不在PATH中的可執行程序時為什么要加./或者絕對路徑的原因。
PATH環境變量存放的是目錄列表,目錄之間用冒號:分隔,最后的圓點.表示當前目錄。
export?PATH=目錄1:目錄2:目錄3:......目錄n:.
PATH缺省包含Linux系統命令所在目錄(/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin),如果不包含這些目錄,Linux的常用命令也無法執行(要輸入絕對路徑才能執行)。
export?PATH=$PATH:$HOME/bin?或?export?PATH=$HOME/bin:$PATH
功能和作用
C/C++語言動態鏈接庫文件搜索的目錄,它不是Linux缺省的環境變量,但對C/C++程序員來說非常重要。
LD_LIBRARY_PATH環境變量存放的也是目錄列表,目錄之間用冒號:分隔,最后的圓點.表示當前目錄,與PATH的格式相同。
書寫格式
export?LD_LIBRARY_PATH=目錄1:目錄2:目錄3:......目錄n:.
功能和作用
C_INCLUDE_PATH 指明C頭文件的搜索路徑,CPLUS_INCLUDE_PATH指明C++頭文件的搜索路徑。
添加格式
推薦
一般情況下Linux是不會設置這些環境變量的。
所以在對某一個環境變量第一次設置時,應該直接將其賦值為所需的目錄,在之后的設置中再使用遞歸式的賦值;或者直接一次性將所有目錄用:分隔開,一起賦值;或者索性不使用這些環境變量,而是在編譯時使用-I參數來添加包含目錄。
JAVA語言庫文件搜索的目錄,它也不是Linux缺省的環境變量,但對JAVA程序員來說非常重要。
CLASSPATH環境變量存放的也是目錄列表,目錄之間用冒號:分隔,最后的圓點.表示當前目錄,與PATH的格式相同。
本小姐介紹Linux下幾個與環境變量配置相關的配置文件。
此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行。
并從 /etc/profile.d 目錄的配置文件中收集 shell 的設置。
如果你有對 /etc/profile 有修改的話必須得手動執行 source /etc/profile,修改才會生效,此修改對每個用戶都生效。

/etc/profile 在每次啟動時會執行 /etc/profile.d 下全部的腳本文件。

為每一個運行終端的用戶執行此文件。當終端被打開時,該文件被讀取。如果你想對所有的使用終端的用戶修改某個配置并在以后打開的終端都生效的話可以修改這個文件,修改這個文件不用重啟,重新打開一個終端即可生效。
Ubuntu沒有此文件,與之對應的是 /etc/bash.bashrc。

每個用戶都可使用該文件輸入專用于自己使用的 shell 信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,它設置一些環境變量,執行用戶的 ~/ .bashrc 文件。此文件類似于 /etc/profile,也是需要手動執行 source ~/.profile,修改才會生效,/etc/profile 對所有用戶生效,~/.profile 只對當前用戶生效。
~/.bash_profile、 ~/.bash_login 和 ~/.profile 文件往往只存在一個,這與Linux的發行版本有關。centos中為 ~/.bash_profile,ubuntu則為 ~/.profile。
執行的順序為:~/.bash_profile > ~/.bash_login > ~/.profile
當用戶登錄時以及每次打開新的Shell時該文件都將被讀取。(每個用戶都有一個 ~/.bashrc 文件,在用戶目錄下) 此文件類似于 /etc/bashrc,不需要重啟就可以生效,重新打開一個 bash 即可生效,/etc/bashrc 對所有用戶新打開的 bash 都生效,但 ~/.bashrc 只對當前用戶新打開的 bash 生效。不推薦在里面配置用戶專用的環境變量,因為每開一個Shell,該文件都會被讀取一次,效率肯定受影響。

當每次退出系統(退出 bash shell)時,執行該文件??砂岩恍┣謇砉ぷ鞯拿罘诺竭@文件中。

1.?/etc/profile
2.?/etc/bashrc
3.?/etc/profile.d
4.?~/.bash_profile?|?~/.bash_login?|?~/.profile
5.?~/.bashrc
environ 變量是一個char** 類型,存儲著系統的環境變量
實例:
執行結果:
也可以通過命令行參數傳遞環境變量
實例:

執行結果:
要想直接獲取某個環境變量,也可以調用函數去獲取,可以使用庫函數getenv()獲取環境變量。
舉例:通過getenv獲取環境變量PWD, 實現自己的PWD指令:
#include
#include
int?main()
{
????char*pwd=getenv("PWD");
????if(pwd==NULL)
????????perror("getenv");
????else
????????printf("%s\n",?pwd);??????????????
????return?0;????????????????????????????????
}????????????????????????????????????????????

end
一口Linux?
關注,回復【1024】海量Linux資料贈送
精彩文章合集
文章推薦