一、環境變量的分類
1)按生效的範圍分類。 系統環境變量:公共的,對全部的用戶都生效。 用戶環境變量:用戶私有的、自定義的個性化設置,只對該用戶生效。 2)按生存周期分類。 永久環境變量:在環境變量腳本文件中配置,用戶每次登錄時會自動執行這些腳本,相當於永久生效。 臨時環境變量:使用時在Shell中臨時定義,退出Shell後失效。
二、常用的環境變量
1、查看環境變量
1)env命令
2)echo命令
echo $環境變量名
注意,符號$不能缺少,這是語法規定。 2、常用的環境變量 1)PATH 可執行程序的搜索目錄,可執行程序包括Linux系統命令和用戶的應用程序,PATH變量的具體用法本文後面的章節中有詳細的介紹。
[root@ansible ~]# echo $PATH
/usr/jmeter/bin/:/opt/rh/rh-postgresql10/root/usr/bin:/opt/ark/arkdb/cellar/mysql57/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/ffmpeg:/root/bin
2)LANG
Linux系統的語言、地區、字符集,LANG變量的具體用法本文後面的章節中有詳細的介紹。
[root@ansible ~]# echo $LANG
en_US.UTF-8
3)HOSTNAME
服務器的主機名。
4)SHELL
用戶當前使用的Shell解析器。
5)HISTSIZE
保存歷史命令的數目。
6)USER
當前登錄用戶的用戶名。
7)HOME
當前登錄用戶的主目錄。
8)PWD
當前工作目錄。
9)CLASSPATH
JAVA語言庫文件搜索的目錄,它也不是Linux缺省的環境變量,但對JAVA程序員來說非常重要,具體用法本文後面的章節中有詳細的介紹。
三、設置環境量
變量名='值'
export 變量名
或
export 變量名='值'
如果環境變量的值沒有空格等特殊符號,可以不用單引號包含。
export ORACLE_HOME=/oracle/home
export ORACLE_BASE=/oracle/base
export ORACLE_SID=snorcl11g
export NLS_LANG='Simplified Chinese_China.ZHS16GBK'
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:.
采用export設置的環境變量,在退出Shell後就會失效,下次登錄時需要重新設置。如果希望環境變量永久生效,需要在登錄腳本文件中配置。
1、系統環境變量
系統環境變量對全部的用戶生效,設置系統環境變量有三種方法。
1)在/etc/profile文件中設置。
用戶登錄時執行/etc/profile文件中設置系統的環境變量。但是,Linux不建議在/etc/profile文件中設置系統環境變量。
2)在/etc/profile.d目錄中增加環境變量腳本文件,這是Linux推薦的方法。
/etc/profile在每次啟動時會執行/etc/profile.d下全部的腳本文件。/etc/profile.d比/etc/profile好維護,不想要什麼變量直接刪除/etc/profile.d下對應的 shell 腳本即可。
/etc/profile.d目錄下有很多腳本文件,例如:
[root@ansible profile.d]# pwd
/etc/profile.d
[root@ansible profile.d]# cat ffmpeg.sh
export FFMPEG_HOME=/usr/local/ffmpeg
export PATH=$PATH:$FFMPEG_HOME
3)在/etc/bashrc文件中設置環境變量。
該文件配置的環境變量將會影響全部用戶使用的bash shell。但是,Linux也不建議在/etc/bashrc文件中設置系統環境變量。
2、用戶環境變量
用戶環境變量只對當前用戶生效,設置用戶環境變量也有多種方法。 在用戶的主目錄,有幾個特別的文件,用ls是看不見的,用 ls .bash_* 可以看見。 1).bash_profile(推薦首選) 當用戶登錄時執行,每個用戶都可以使用該文件來配置專屬於自己的環境變量。 2).bashrc 當用戶登錄時以及每次打開新的Shell時該文件都將被讀取,不推薦在裏面配置用戶專用的環境變量,因為每開一個Shell,該文件都會被讀取一次,效率肯定受影響。 3).bash_logout 當每次退出系統(退出bash shell)時執行該文件。 4).bash_history 保存了當前用戶使用過的歷史命令。 3、環境變量腳本文件的執行順序 環境變量腳本文件的執行順序如下: /etc/profile->/etc/profile.d->/etc/bashrc->用戶的.bash_profile->用戶的.bashrc 同名的環境變量,如果在多個腳本中有配置,以最後執行的腳本中的配置為准。 還有一個問題需要注意,在/etc/profile中執行了/etc/profile.d的腳本,代碼如下:
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
所以,/etc/profile.d和/etc/profile的執行順序還要看代碼怎麼寫。
四、環境變量的生效
1)在Shell下,用export設置的環境變量對當前Shell立即生效,Shell退出後失效。 2)在腳本文件中設置的環境變量不會立即生效,退出Shell後重新登錄時才生效,或者用source命令讓它立即生效,例如:
source /etc/profile