前言:
1. 環境變量是操作系統環境設置的變量,適用于整個系統的用戶進程;
2. 環境變量可以在命令中設置,但是用戶注銷的時候將會丟失這些設置值;
3. 若要重復適用,則最好在.profile中定義;環境變量的使用與本地變量的使用方法相同,
4. 但是在使用之前,必須用export命令導出。
一.Linux的變量種類
按變量的生存周期來劃分,Linux變量可分為兩類:
1.永久的:需要修改配置文件,變量永久生效
2.臨時的:使用export命令聲明即可,變量在關閉shell時失效
二.Linux 環境變量文件
linux變量文件有/etc/environment 或 /etc/profile 或 ~/.profile 或 /etc/bash.bashrc 或 ~/.bashrc, 以及~/.bash_profile(一般是用戶在自己目錄下新建的),~/.bash_logout.
1./etc/environment:是系統在登錄時讀取的第一個文件,用于為所有進程設置環境變量。系統使用此文件時并不是執行此文件中的命令,而是根據而是根據KEY=VALUE模式的代碼,對KEY賦值以VALUE,因此文件中如果要定義PATH環境變量,只需加入一行形如 PATH=$PATH:/xxx/bin的代碼即可
2./etc/profile:此文件是系統登錄時執行的第二個文件。 為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行。并從/etc/profile.d目錄的配置文件中搜集shell的設置。
(/etc/profile可以用于設定針對全系統所有用戶的環境變量,環境變量周期是永久性)
3. ~/.profile:
對應當前登錄用戶的profile文件,用于定制當前用戶的個人工作環境(變量是永久性)
4. /etc/bash.bashrc:是針對所有用戶的bash初始化文件,在此中設定的環境變量將應用于所有用戶的shell中,此文件會在用戶每次打開shell時執行一次
5.~/.bashrc:該文件包含專用于你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該文件被讀取。(~/.bashrc只針對當前用戶,變量的生命周期是永久的)
6.~/.bash_profile:每個用戶都可使用該文件輸入專用于自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次。默認情況下,他設置一些環境變量,執行用戶的.bashrc文件。(如果~/目錄下沒有.bash_profile則新建立一個)
當一個shell關閉時,在bash_profile中定義的系統變量則會失效。因此,每打開一個新的shell時都要運行一次source bash_profile.而且針對當前用戶。
7.~/.bash_logout:當每次退出系統(退出bash shell)時,執行該文件。
說明:
1.以上這幾個文件的執行順序是/etc/enviroment–>/etc/profile –>~/.profile –>/etc/bash.bashrc–> ~/.bashrc
2.要使得剛修改的環境變量生效:source .bashrc
3.查看環境變量:env
4.使用readonly命令設置只讀變量,如果使用了readonly命令的話,變量就不可以被修改或清除了。
5.使用unset命令來清除環境變量
$ unset TEMP_KEVIN?? #刪除環境變量TEMP_KEVIN
三.設置變量的三種方法
1. 在/etc/profile文件中添加變量[對所有用戶生效(永久的)]
用vim在文件/etc/profile文件中增加變量,該變量將會對Linux下所有用戶有效,并且是“永久的”。
例如:編輯/etc/profile文件,添加TEST變量
# vim/etc/profile
exportTEST=JIBO
注:修改文件后要想馬上生效還要運行# source /etc/profile不然只能在下次重進此用戶時生效。
2. 在用戶目錄下的.bash_profile文件中增加變量[對單一用戶生效(永久的)]
用vim在用戶目錄下的.bash_profile文件中增加變量,改變量僅會對當前用戶有效,并且是“永久的”。
例如:編輯jibo用戶目錄(/home/jibo)下的.bash_profile
$ vi/home/jibo/.bash.profile 如果沒就更改.bashrc文件.
添加如下內容:
exportTEST=JIBO
注:修改文件后要想馬上生效還要運行
$source /home/jibo/.bash_profile不然只能在下次重進此用戶時生效。
3. 直接運行export命令定義變量(只對當前shell(BASH)有效(臨時的))
在shell的命令行下直接使用[export變量名=變量值]定義變量,該變量只在當前的shell(BASH)或其子shell(BASH)下是有效的,shell關閉了,變量也就失效了,再打開新shell時就沒有這個變量,需要使用的話還需要重新定義。
1>同一行鍵入2個語句,使用分號隔開
VARIABLE-NAME=value; export VARIABLE-NAME
也可以分行寫:
VARIABLE-NAME=value
export VARIABLE-NAME
4.set命令
在$HOME.profile文件中,設置環境變量時,除了export可以導出之外,還有set -a命令,可以指明所有變量直接被導出;不過別在/etc/profile中設置,在自己的$HOME.profile中設置。