CentOS7設置環境變量


一、環境變量的概念

1、環境變量的含義

程序(操作系統命令和應用程序)的執行都需要運行環境,這個環境是由多個環境變量組成的。

2、環境變量的分類

1)按生效的范圍分類。

系統環境變量:公共的,對全部的用戶都生效。

用戶環境變量:用戶私有的、自定義的個性化設置,只對該用戶生效。

2)按生存周期分類。

永久環境變量:在環境變量腳本文件中配置,用戶每次登錄時會自動執行這些腳本,相當於永久生效。

臨時環境變量:使用時在Shell中臨時定義,退出Shell后失效。

3、Linux環境變量

Linux環境變量也稱之為Shell環境量變,以下划線和字母打頭,由下划線、字母(區分大小寫)和數字組成,習慣上使用大寫字母,例如PATH、HOSTNAME、LANG等。

二、常用的環境變量

1、查看環境變量

1)env命令

在Shell下,用env命令查看當前用戶全部的環境變量。

在這里插入圖片描述

上圖只截取了部分環境變量,並非全部。

用env命令的時候,滿屏顯示了很多環境變量,不方便查看,可以用grep篩選。

env|grep 環境變量名

例如查看環境變量名中包含PATH的環境變量。

env|grep PATH

在這里插入圖片描述

2)echo命令

echo $環境變量名

在這里插入圖片描述

注意,符號$不能缺少,這是語法規定。

2、常用的環境變量

1)PATH

可執行程序的搜索目錄,可執行程序包括Linux系統命令和用戶的應用程序,PATH變量的具體用法本文后面的章節中有詳細的介紹。

在這里插入圖片描述

2)LANG

Linux系統的語言、地區、字符集,LANG變量的具體用法本文后面的章節中有詳細的介紹。

在這里插入圖片描述

3)HOSTNAME

服務器的主機名。

4)SHELL

用戶當前使用的Shell解析器。

5)HISTSIZE

保存歷史命令的數目。

6)USER

當前登錄用戶的用戶名。

7)HOME

當前登錄用戶的主目錄。

8)PWD

當前工作目錄。

9)LD_LIBRARY_PATH

C/C++語言動態鏈接庫文件搜索的目錄,它不是Linux缺省的環境變量,但對C/C++程序員來說非常重要,具體用法本文后面的章節中有詳細的介紹。

10)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目錄下有很多腳本文件,例如:

在這里插入圖片描述

在以上示例中,/etc/profile.d目錄中的oracle.sh是Oracle數據庫的環境變量配置文件,內容如下:

在這里插入圖片描述

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、PATH環境變量

可執行程序的搜索目錄,可執行程序包括Linux系統命令和用戶的應用程序。如果可執行程序的目錄不在PATH指定的目錄中,執行時需要指定目錄。

1)PATH環境變量存放的是目錄列表,目錄之間用冒號:分隔,最后的圓點.表示當前目錄。

export PATH=目錄1:目錄2:目錄3:......目錄n:.

2)PATH缺省包含了Linux系統命令所在的目錄(/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin),如果不包含這些目錄,Linux的常用命令也無法執行(要輸入絕對路徑才能執行)。

示例:

在這里插入圖片描述

3)在用戶的.bash_profile文件中,會對PATH進行擴充,如下:

export PATH=$PATH:$HOME/bin

4)如果PATH變量中沒有包含圓點.,執行當前目錄下的程序需要加./或使用絕對路徑。

示例:

在這里插入圖片描述

2、LANG環境變量

LANG環境變量存放的是Linux系統的語言、地區、字符集,它不需要系統管理員手工設置,/etc/profile會調用/etc/profile.d/lang.sh腳本完成對PATH的設置。

CentOS6.x 字符集配置文件在/etc/syscconfig/i18n文件中。

CentOS7.x 字符集配置文件在/etc/locale.conf文件中,內容如下:

在這里插入圖片描述

3、LD_LIBRARY_PATH環境變量

C/C++語言動態鏈接庫文件搜索的目錄,它不是Linux缺省的環境變量,但對C/C++程序員來說非常重要。

LD_LIBRARY_PATH環境變量存放的也是目錄列表,目錄之間用冒號:分隔,最后的圓點.表示當前目錄,與PATH的格式相同。

export LD_LIBRARY_PATH=目錄1:目錄2:目錄3:......目錄n:.

4、CLASSPATH

JAVA語言庫文件搜索的目錄,它也不是Linux缺省的環境變量,但對JAVA程序員來說非常重要。

CLASSPATH環境變量存放的也是目錄列表,目錄之間用冒號:分隔,最后的圓點.表示當前目錄,與PATH的格式相同。

五、環境變量的生效

1)在Shell下,用export設置的環境變量對當前Shell立即生效,Shell退出后失效。

2)在腳本文件中設置的環境變量不會立即生效,退出Shell后重新登錄時才生效,或者用source命令讓它立即生效,例如:

source /etc/profile

六、應用經驗

雖然設置環境變量的方法有多種,但是建議系統環境變量建議在/etc/profile.d目錄中配置,用戶環境變量在用戶的.bash_profile中配置,不建議在其它腳本文件中配置環境變,會增加運維的麻煩,容易出錯。

七、版權聲明

C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道

如果文章有錯別字,或者內容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM