Linux Centos 設(shè)置環(huán)境變量
一、環(huán)境變量的概念
1、環(huán)境變量的含義
程序(操作系統(tǒng)命令和應(yīng)用程序)的執(zhí)行都需要運(yùn)行環(huán)境,這個(gè)環(huán)境是由多個(gè)環(huán)境變量組成的。
2、環(huán)境變量的分類
1)按生效的范圍分類。
系統(tǒng)環(huán)境變量:公共的,對全部的用戶都生效。
用戶環(huán)境變量:用戶私有的、自定義的個(gè)性化設(shè)置,只對該用戶生效。
2)按生存周期分類。
永久環(huán)境變量:在環(huán)境變量腳本文件中配置,用戶每次登錄時(shí)會(huì)自動(dòng)執(zhí)行這些腳本,相當(dāng)于永久生效。
臨時(shí)環(huán)境變量:使用時(shí)在Shell中臨時(shí)定義,退出Shell后失效。
3、Linux環(huán)境變量
Linux環(huán)境變量也稱之為Shell環(huán)境量變,以下劃線和字母打頭,由下劃線、字母(區(qū)分大小寫)和數(shù)字組成,習(xí)慣上使用大寫字母,例如PATH、HOSTNAME、LANG等。
二、常用的環(huán)境變量
1、查看環(huán)境變量
1)env命令
在Shell下,用env命令查看當(dāng)前用戶全部的環(huán)境變量。
上圖只截取了部分環(huán)境變量,并非全部。
用env命令的時(shí)候,滿屏顯示了很多環(huán)境變量,不方便查看,可以用grep篩選。
env|grep?環(huán)境變量名
例如查看環(huán)境變量名中包含PATH的環(huán)境變量。
env|grep PATH
2)echo命令
echo $環(huán)境變量名
注意,符號$不能缺少,這是語法規(guī)定。
2、常用的環(huán)境變量
1)PATH
可執(zhí)行程序的搜索目錄,可執(zhí)行程序包括Linux系統(tǒng)命令和用戶的應(yīng)用程序,PATH變量的具體用法本文后面的章節(jié)中有詳細(xì)的介紹。

2)LANG
Linux系統(tǒng)的語言、地區(qū)、字符集,LANG變量的具體用法本文后面的章節(jié)中有詳細(xì)的介紹。

3)HOSTNAME
服務(wù)器的主機(jī)名。
4)SHELL
用戶當(dāng)前使用的Shell解析器。
5)HISTSIZE
保存歷史命令的數(shù)目。
6)USER
當(dāng)前登錄用戶的用戶名。
7)HOME
當(dāng)前登錄用戶的主目錄。
8)PWD
當(dāng)前工作目錄。
9)LD_LIBRARY_PATH
C/C++語言動(dòng)態(tài)鏈接庫文件搜索的目錄,它不是Linux缺省的環(huán)境變量,但對C/C++程序員來說非常重要,具體用法本文后面的章節(jié)中有詳細(xì)的介紹。
10)CLASSPATH
JAVA語言庫文件搜索的目錄,它也不是Linux缺省的環(huán)境變量,但對JAVA程序員來說非常重要,具體用法本文后面的章節(jié)中有詳細(xì)的介紹。
三、設(shè)置環(huán)境量
變量名='值' export?變量名
或
export?變量名='值'
如果環(huán)境變量的值沒有空格等特殊符號,可以不用單引號包含。
示例:
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設(shè)置的環(huán)境變量,在退出Shell后就會(huì)失效,下次登錄時(shí)需要重新設(shè)置。如果希望環(huán)境變量永久生效,需要在登錄腳本文件中配置。
1、系統(tǒng)環(huán)境變量
系統(tǒng)環(huán)境變量對全部的用戶生效,設(shè)置系統(tǒng)環(huán)境變量有三種方法。
1)在/etc/profile文件中設(shè)置。
用戶登錄時(shí)執(zhí)行/etc/profile文件中設(shè)置系統(tǒng)的環(huán)境變量。但是,Linux不建議在/etc/profile文件中設(shè)置系統(tǒng)環(huán)境變量。
2)在/etc/profile.d目錄中增加環(huán)境變量腳本文件,這是Linux推薦的方法。
/etc/profile在每次啟動(dòng)時(shí)會(huì)執(zhí)行 /etc/profile.d下全部的腳本文件。/etc/profile.d比/etc/profile好維護(hù),不想要什么變量直接刪除 /etc/profile.d下對應(yīng)的 shell 腳本即可。
/etc/profile.d目錄下有很多腳本文件,例如:
在以上示例中,/etc/profile.d目錄中的oracle.sh是Oracle數(shù)據(jù)庫的環(huán)境變量配置文件,內(nèi)容如下:
3)在/etc/bashrc文件中設(shè)置環(huán)境變量。
該文件配置的環(huán)境變量將會(huì)影響全部用戶使用的bash shell。但是,Linux也不建議在/etc/bashrc文件中設(shè)置系統(tǒng)環(huán)境變量。
2、用戶環(huán)境變量
用戶環(huán)境變量只對當(dāng)前用戶生效,設(shè)置用戶環(huán)境變量也有多種方法。
在用戶的主目錄,有幾個(gè)特別的文件,用ls是看不見的,用ls .bash_*可以看見。

1).bash_profile(推薦首選)
當(dāng)用戶登錄時(shí)執(zhí)行,每個(gè)用戶都可以使用該文件來配置專屬于自己的環(huán)境變量。
2).bashrc
當(dāng)用戶登錄時(shí)以及每次打開新的Shell時(shí)該文件都將被讀取,不推薦在里面配置用戶專用的環(huán)境變量,因?yàn)槊块_一個(gè)Shell,該文件都會(huì)被讀取一次,效率肯定受影響。
3).bash_logout
當(dāng)每次退出系統(tǒng)(退出bash shell)時(shí)執(zhí)行該文件。
4).bash_history
保存了當(dāng)前用戶使用過的歷史命令。
3、環(huán)境變量腳本文件的執(zhí)行順序
環(huán)境變量腳本文件的執(zhí)行順序如下:
/etc/profile->/etc/profile.d->/etc/bashrc->用戶的.bash_profile->用戶的.bashrc
同名的環(huán)境變量,如果在多個(gè)腳本中有配置,以最后執(zhí)行的腳本中的配置為準(zhǔn)。
還有一個(gè)問題需要注意,在/etc/profile中執(zhí)行了/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的執(zhí)行順序還要看代碼怎么寫。
四、重要環(huán)境變量的詳解
1、PATH環(huán)境變量
可執(zhí)行程序的搜索目錄,可執(zhí)行程序包括Linux系統(tǒng)命令和用戶的應(yīng)用程序。如果可執(zhí)行程序的目錄不在PATH指定的目錄中,執(zhí)行時(shí)需要指定目錄。
1)PATH環(huán)境變量存放的是目錄列表,目錄之間用冒號:分隔,最后的圓點(diǎn).表示當(dāng)前目錄。
export PATH=目錄1:目錄2:目錄3:......目錄n:.
2)PATH缺省包含了Linux系統(tǒng)命令所在的目錄(/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin),如果不包含這些目錄,Linux的常用命令也無法執(zhí)行(要輸入絕對路徑才能執(zhí)行)。
示例:
3)在用戶的.bash_profile文件中,會(huì)對PATH進(jìn)行擴(kuò)充,如下:
export PATH=$PATH:$HOME/bin
4)如果PATH變量中沒有包含圓點(diǎn).,執(zhí)行當(dāng)前目錄下的程序需要加./或使用絕對路徑。
示例:
2、LANG環(huán)境變量
LANG環(huán)境變量存放的是Linux系統(tǒng)的語言、地區(qū)、字符集,它不需要系統(tǒng)管理員手工設(shè)置,/etc/profile會(huì)調(diào)用/etc/profile.d/lang.sh腳本完成對LANG的設(shè)置。
CentOS6.x?字符集配置文件在/etc/syscconfig/i18n文件中。
CentOS7.x?字符集配置文件在/etc/locale.conf文件中,內(nèi)容如下:

3、LD_LIBRARY_PATH環(huán)境變量
C/C++語言動(dòng)態(tài)鏈接庫文件搜索的目錄,它不是Linux缺省的環(huán)境變量,但對C/C++程序員來說非常重要。
LD_LIBRARY_PATH環(huán)境變量存放的也是目錄列表,目錄之間用冒號:分隔,最后的圓點(diǎn).表示當(dāng)前目錄,與PATH的格式相同。
export LD_LIBRARY_PATH=目錄1:目錄2:目錄3:......目錄n:.
4、CLASSPATH
JAVA語言庫文件搜索的目錄,它也不是Linux缺省的環(huán)境變量,但對JAVA程序員來說非常重要。
CLASSPATH環(huán)境變量存放的也是目錄列表,目錄之間用冒號:分隔,最后的圓點(diǎn).表示當(dāng)前目錄,與PATH的格式相同。
五、環(huán)境變量的生效
1)在Shell下,用export設(shè)置的環(huán)境變量對當(dāng)前Shell立即生效,Shell退出后失效。
2)在腳本文件中設(shè)置的環(huán)境變量不會(huì)立即生效,退出Shell后重新登錄時(shí)才生效,或者用source命令讓它立即生效,例如:
source /etc/profile
六、應(yīng)用經(jīng)驗(yàn)
雖然設(shè)置環(huán)境變量的方法有多種,但是建議系統(tǒng)環(huán)境變量建議在/etc/profile.d目錄中配置,用戶環(huán)境變量在用戶的.bash_profile中配置,不建議在其它腳本文件中配置環(huán)境變,會(huì)增加運(yùn)維的麻煩,容易出錯(cuò)。
七、版權(quán)聲明
C語言技術(shù)網(wǎng)原創(chuàng)文章,轉(zhuǎn)載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術(shù)網(wǎng)(www.freecplus.net)
鏈接:https://www.dianjilingqu.com/608600.html