Linux 環境變量

Linux的變量種類

按變量的生存週期來劃分,Linux變量可分爲兩類:

  1. 永久的:需要修改配置文件,變量永久生效。
  2. 臨時的:使用export命令聲明即可,變量在關閉shell時失效。

設置環境變量

  1. /etc/profile文件中添加變量【對所有用戶生效(永久的)】
    用vi在文件/etc/profile文件中增加變量,該變量將會對Linux下所有用戶有效,並且是“永久的”。

示例:
編輯/etc/profile文件,添加CLASSPATH變量

vi /etc/profile 
export CLASSPATH=$JAVA_HOME/jre/lib

注:修改文件後要想馬上生效還要運行source /etc/profile不然只能在下次重進此用戶時生效。

  1. 在用戶目錄下的.bash_profile文件中增加變量【對單一用戶生效(永久的)】
    用vi在用戶目錄下的.bash_profile文件中增加變量,該變量僅會對當前用戶有效,並且是“永久的”。

示例:
編輯xueying用戶目錄(/home/xueying)下的.bash_profile
vi /home/xueying/.bash_profile 添加如下內容:

vi /home/xueying/.bash_profile
export CLASSPATH=$JAVA_HOME/jre/lib

注:修改文件後要想馬上生效還要運行source /home/xueying/.bash_profile不然只能在下次重進此用戶時生效。

  1. 直接運行export命令定義變量【只對當前shell(BASH)有效(臨時的)】
    在shell的命令行下直接使用[export 變量名=變量值] 定義變量。該變量只在當前的shell(BASH)或其子shell(BASH)下是有效的,shell關閉了,變量也就失效了,再打開新shell時就沒有這個變量,需要使用的話還需要重新定義。

查看環境變量

  1. 使用echo命令查看單個環境變量。例如:
    echo $PATH
  2. 使用env查看所有環境變量。例如:
    env
  3. 使用set查看所有本地定義的環境變量。

使用unset刪除指定的環境變量

set可以設置某個環境變量的值。清除環境變量的值用unset命令。如果未指定值,則該變量值將被設爲NULL。

示例如下:

export TEST="Test..." #增加一個環境變量TEST
env | grep TEST #此命令有輸入,證明環境變量TEST已經存在了 
TEST=Test... 
unset TEST #刪除環境變量TEST 
env | grep TEST #此命令沒有輸出,證明環境變量TEST已經刪除

常用的環境變量

PATH 決定了shell將到哪些目錄中尋找命令或程序 
HOME 當前用戶主目錄 
HISTSIZE 歷史記錄數 
LOGNAME 當前用戶的登錄名 
HOSTNAME 指主機的名稱 
SHELL 當前用戶Shell類型 
LANGUGE 語言相關的環境變量,多語言可以修改此環境變量 
MAIL 當前用戶的郵件存放目錄 
PS1 基本提示符,對於root用戶是#,對於普通用戶是$

擴展閱讀一

set,env和export這三個命令都可以用來顯示shell變量,其區別?

set 用來顯示本地變量
env 用來顯示環境變量
export 用來顯示和設置環境變量

set 顯示當前shell的變量,包括當前用戶的變量
env 顯示當前用戶的變量
export 顯示當前導出成用戶變量的shell變量

每個shell有自己特有的變量(set)顯示的變量,這個和用戶變量是不同的,當前用戶變量和你用什麼shell無關,不管你用什麼shell都在,比如HOME,SHELL等這些變量;但shell自己的變量對於不同的shell是不同的,比如BASH_ARGC,BASH等,這些變量只有set纔會顯示,是bash特有的;export不加參數的時候,顯示哪些變量被導出成了用戶變量,因爲一個shell自己的變量可以通過export “導出”變成一個用戶變量。

[root@linux ~]# aaa=bbb
[root@linux ~]# echo $aaa
bbb
[root@linux ~]# set | grep aaa
aaa=bbb
[root@linux ~]# env | grep aaa
[root@linux ~]# export aaa
[root@linux ~]# env | grep aaa
aaa=bbb

擴展閱讀二

set、env、export — Linux中的環境變量命令
Linux是一個多用戶的操作系統。每個用戶登錄系統後,都會有一個專用的運行環境。通常每個用戶默認的環境都是相同的,這個默認環境實際上就是一組環境變量的定義。用戶可以對自己的運行環境進行定製,其方法就是修改相應的系統環境變量。

  1. 什麼是環境變量
    環境變量是一個具有特定名字的對象,它包含了一個或者多個應用程序將使用到的信息。通過使用環境變量,你可以很容易的修改一個牽涉到一個或多個應用程序的配置信息。
  2. 常見的環境變量
  • PATH 指定命令的搜索路徑。
  • LIBRARY_PATH 用於在程序編譯期間查找動態鏈接庫時指定查找共享庫的路徑。

指定gcc編譯需要鏈接動態鏈接庫的目錄。
設置libtest1和libtest2目錄

# export LIBRARY_PATH=libtest1:libtest2:$LIBRARY_PATH
# gcc *.c -L./libtest1 -L./libtest2 -ltest1 -ltest2 // 編譯時分別鏈接libtest1目錄下的libtest1.so庫與libtest2目錄的libtest2.so庫。
  • LD_LIBRARY_PATH 用於在程序運行期間查找動態鏈接庫時指定除了系統默認路徑(/usr/lib)之外的路徑。

可執行文件運行程序之前執行:

# export LD_LIBRARY_PATH=libtest1:libtest2:$LD_LIBRARY_PATH
# ./program // 運行可執行程序

除此之外,還有下面一些常見環境變量。

HISTSIZE 保存歷史命令記錄的條數。
LOGNAME 當前用戶的登錄名。
HOSTNAME 主機的名稱,許多應用程序如果要用到主機名的話,通常是從這個環境變量中來取得的。
SHELL 當前用戶用的是哪種Shell。
LANG/LANGUGE 和語言相關的環境變量,使用多種語言的用戶可以修改此環境變量。
MAIL 當前用戶的郵件存放目錄。
PS1 基本提示符,對於root用戶是#,對於普通用戶是$。PS2是附屬提示符,默認是“>”。可以通過修改此環境變量來修改當前的命令符,比如下列命令會將提示符修改成字符串“Hello,My NewPrompt”。

擴展閱讀三

關於 LIBRARY_PATH 和 LD_LIBRARY_PATH 的關係。

  1. Linux gcc編譯鏈接時的動態庫搜索路徑
    GCC編譯、鏈接生成可執行文件時,動態庫的搜索路徑順序如下(注意不會遞歸性地在其子目錄下搜索):
1. gcc編譯、鏈接命令中的-L選項;
2. gcc的環境變量的LIBRARY_PATH(多個路徑用冒號分割);
3. gcc默認動態庫目錄:/lib:/usr/lib:usr/lib64:/usr/local/lib。
  1. 執行二進制文件時的動態庫搜索路徑
    鏈接生成二進制可執行文件後,在運行程序加載動態庫文件時,搜索的路徑順序如下:
1. 編譯目標代碼時指定的動態庫搜索路徑:用選項-Wl, rpath和include指定的動態庫的搜索路徑,比如gcc -Wl, -rpath, include -L. -ltest hello.c,在執行文件時會搜索路徑`./include`2. 環境變量LD_LIBRARY_PATH(多個路徑用冒號分割);
3./etc/ld.so.conf.d/ 目錄下的配置文件指定的動態庫絕對路徑(通過ldconfig生效,一般是非root用戶時使用);
4. gcc默認動態庫目錄:/lib:/usr/lib:usr/lib64:/usr/local/lib等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章