Centos7 設定環境變數
技術標籤:L-Linux
一、環境變數的分類
1)按生效的範圍分類。 系統環境變數:公共的,對全部的使用者都生效。 使用者環境變數:使用者私有的、自定義的個性化設定,只對該使用者生效。
2)按生存週期分類。 永久環境變數:在環境變數指令碼檔案中配置,使用者每次登入時會自動執行這些指令碼,相當於永久生效。
臨時環境變數:使用時在Shell中臨時定義,退出Shell後失效。
二、常用的環境變數
1、檢視環境變數
1)env命令
2)echo命令
echo $環境變數名
注意,符號$不能缺少,這是語法規定。
2、常用的環境變數
1)PATH
可執行程式的搜尋目錄,可執行程式包括Linux系統命令和使用者的應用程式,PATH變數的具體用法本文後面的章節中有詳細的介紹。
[[email protected] ~]# 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變數的具體用法本文後面的章節中有詳細的介紹。
[[email protected] ~]# 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目錄下有很多指令碼檔案,例如:
[[email protected] profile.d]# pwd
/etc/profile.d
[[email protected] 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