Linux環境變量及其配置實戰
簡介
環境變量是在操作系統中一個具有特定名字的對象,它包含了一個或多個應用程序將使用到的信息。Linux是一個多用戶的操作系統,每個用戶登錄系統時都會有一個專用的運行環境,通常情況下每個用戶的默認的環境都是相同的。這個默認環境就是一組環境變量的定義。每個用戶都可以通過修改環境變量的方式對自己的運行環境進行配置。
分類
根據環境變量的生命周期我們可以將其分為永久性變量和臨時性變量,根據用戶等級的不同又可以將其分為系統級變量和用戶級變量。怎麽分都無所謂,主要是對它的理解。
對所有用戶生效的永久性變量(系統級)
這類變量對系統內的所有用戶都生效,所有用戶都可以使用這類變量。作用範圍是整個系統。
當然,這個文件只有在root(超級用戶)下才能修改。我們可以在etc目錄下使用ls -l查看這個文件的用戶及權限。
利用vim打開/etc/profile文件,用export指令添加環境變量。
#set java environment export JAVA_HOME=/usr/java/jdk export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib export PATH=$JAVA_HOME/bin:$PATH
【註意】:添加完成後新的環境變量不會立即生效,除非你調用source /etc/profile 該文件才會生效。否則只能在下次重進此用戶時才能生效。
對單一用戶生效的永久性變量(用戶級)
該類環境變量只對當前的用戶永久生效。也就是說假如用戶A設置了此類環境變量,這個環境變量只有A可以使用。而對於其他的B,C,D,E….用戶等等,這個變量是不存在的。
設置方法:在用戶主目錄”~”下的隱藏文件 “.bash_profile”中添加自己想要的環境變量。
查看隱藏文件: ls -a或ls -al
利用vim打開文件,利用export添加環境變量。與上相同。同樣註意,添加完成後新的環境變量不會立即生效,除非你調用source ./.bash_profile 該文件才會生效。否則只能在下次重進此用戶時才能生效。
可以看到我在上圖中用紅框框住了兩個文件,.bashrc和.bash_profile。原則上來說設置此類環境變量時在這兩個文件任意一個裏面添加都是可以的。
~/.bash_profile是交互式login方式進入bash shell運行。
~/.bashrc是交互式non-login方式進入bash shell運行。
二者設置大致相同。通俗點說,就是.bash_profile文件只會在用戶登錄的時候讀取一次,而.bashrc在每次打開終端進行一次新的會話時都會讀取。
臨時有效的環境變量(只對當前shell有效)
此類環境變量只對當前的shell有效。當我們退出登錄或者關閉終端再重新打開時,這個環境變量就會消失。是臨時的。
設置方法:直接使用export指令添加。
設置環境變量常用的幾個指令
echo
查看顯示環境變量,使用時要加上符號“”例:echoPATH
export
設置新的環境變量
export 新環境變量名=內容
例:export MYNAME=”LLZZ”
修改環境變量
修改環境變量沒有指令,可以直接使用環境變量名進行修改。
例:MYNAME=”ZZLL”
env
查看所有環境變量
set
查看本地定義的所有shell變量
unset
刪除一個環境變量
例 unset MYNAME
readonly
設置只讀環境變量。
例:readonly MYNAME
常用的幾個環境變量(一般都為大寫)
PATH
指定命令的搜索路徑。通過設置環境變量PATH可以讓我們運行程序或指令更加方便。
echo $PATH 查看環境變量PATH。
參考:
https://blog.csdn.net/llzk_/article/details/53813266
經典實戰說明配置環境變量方法:
安裝完成java jdk後,配置
(1)對所有用戶生效的永久性變量(系統級)配置
[root@szxjdw02-web-51~]# vim /etc/profile #增加如下4行內容 #set java environment export JAVA_HOME=/usr/java/jdk export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib export PATH=$JAVA_HOME/bin:$PATH
使用全局環境變量配置生效
[root@szxjdw02-web-51 ~]# source /etc/profile
查看java環境變量是否生效
[root@szxjdw02-web-51 ~]# which java /usr/java/jdk/bin/java
在遠程這臺機器執行which java提示找不到java,本地可以找到,這是為什麽?
[root@office target]# ssh [email protected] which java which: no java in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)
(2)對單一用戶生效的永久性變量(用戶級)
~/.bash_profile是交互式login方式進入bash shell運行。
~/.bashrc是交互式non-login方式進入bash shell運行。
2.1 配置~/.bash_profile是交互式login方式進入bash shell運行環境變量
[root@szxjdw02-web-51 ~]# vim ~/.bash_profile #增加如下4行內容 #set java environment export JAVA_HOME=/usr/java/jdk export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib export PATH=$JAVA_HOME/bin:$PATH
遠程這臺機器執行which java還是提示找不到java,但是本地可以找到
[root@office target]# ssh [email protected] which java which: no java in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)
讓配置文件生效一下
[root@szxjdw02-web-51 ~]# source ~/.bash_profile
遠程這臺機器執行which java還是提示找不到java
[root@office target]# ssh [email protected] which java which: no java in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)
2.2 配置~/.bashrc是交互式non-login方式進入bash shell運行環境變量
[root@szxjdw02-web-51 ~]# vim ~/.bashrc #增加如下4行內容 #set java environment export JAVA_HOME=/usr/java/jdk export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib export PATH=$JAVA_HOME/bin:$PATH
先不要source ~/.bashrc,直接遠程執行which java查看是否可以找到java環境變量,如下發現找到了。
[root@office target]# ssh [email protected] which java /usr/java/jdk/bin/java
總結:永久修改環境變量三部曲
第一部曲:交互式login方式進入bash shell運行環境變量
vim /etc/profile
source /etc/profile
第二部曲:交互式login方式進入bash shell運行環境變量
vim ~/.bash_profile
source ~/.bash_profile
第三部曲:交互式non-login方式進入bash shell運行環境變量
vim ~/.bashrc
source ~/.bashrc #此步驟不操作也可以,因為上面實戰已驗證
另外補充:
bashrc與profile的區別
要搞清bashrc與profile的區別,首先要弄明白什麽是交互式shell和非交互式shell,什麽是login shell 和non-login shell。
交互式模式就是shell等待你的輸入,並且執行你提交的命令。這種模式被稱作交互式是因為shell與用戶進行交互。這種模式也是大多數用戶非常熟悉的:登錄、執行一些命令、簽退。當你簽退後,shell也終止了。 shell也可以運行在另外一種模式:非交互式模式。在這種模式下,shell不與你進行交互,而是讀取存放在文件中的命令,並且執行它們。當它讀到文件的結尾,shell也就終止了。
bashrc與profile都用於保存用戶的環境信息,bashrc用於交互式non-loginshell,而profile用於交互式login shell。系統中存在許多bashrc和profile文件,下面逐一介紹:
/etc/pro此文件為系統的每個用戶設置環境信息,當第一個用戶登錄時,該文件被執行.
並從/etc/profile.d目錄的配置文件中搜集shell的設置.
/etc/bashrc:為每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取。有些linux版本中的/etc目錄下已經沒有了bashrc文件。
~/. pro每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該
文件僅僅執行一次!默認情況下,它設置一些環境變量,然後執行用戶的.bashrc文件.
~/.bashrc:該文件包含專用於某個用戶的bash shell的bash信息,當該用戶登錄時以及每次打開新的shell時,該文件被讀取.
另外,/etc/profile中設定的變量(全局)的可以作用於任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承/etc/profile中的變量,他們是"父子"關系.
參考文檔:
https://www.cnblogs.com/aaronLinux/p/5837702.html
https://www.cnblogs.com/hongzg1982/articles/2101792.html
https://blog.csdn.net/llzk_/article/details/53813266
Linux環境變量及其配置實戰