1. 程式人生 > 其它 >Centos7 設定環境變數

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