1. 程式人生 > >Linux設定JAVA的全域性環境變數時的大坑

Linux設定JAVA的全域性環境變數時的大坑

一、背景

由於需要增加一臺新的機器用作hadoop叢集的客戶端,而JAVA環境變數是必需要配置的,而且是需要配置全域性的java環境變數(即配置在:/etc/profile 檔案中)。於是我就在/etc/profile里加入了java的環境變數:

如圖:


1 . 使用source /etc/profile 命令使得配置生效,

2.檢查版本是否正確。如圖:


然後就以為自己配置正常了,沒有問題了。而在這裡埋下了一個大地雷,炸了一個大坑。

二、出現了問題:

1.再此登陸系統的時候,使用java -version命令,報錯:

If 'java' is not a typo you can use command-not-found to lookup the package that contains it, like this:  cnf java


這就很尷尬了,然後su 到其他的普通使用者都報同樣的錯誤,使用source /etc/profile只對當前的shell環境起作用,一旦shell關閉,java就不起作用了。

/etc/profile明明就是全域性的變數設定的檔案,為啥不對全域性起作用呢?

三、問題分析:

具體詳細的解決過程就不說了,太繁雜,走錯了很多彎路,直接到檢查/etc/profile檔案中java環境變數的配置處:如圖:


1.一開始我不知道export JAVA_HOME=...這些應該放在/etc/profile的檔案那個位置,於是我看見A這樣一段文字,我就覺得那類似於export這樣的設定變數的都放在統一位置。

2.於是我將我的JAVA環境變數配置放在了B處,使其與A類似。

3.問題的關鍵就是C處的內容,C處的內容是會把我的JAVA環境變數重置了,也就是我的java環境變數根本就不會起作用了(具體指令碼執行流程後期詳細分析)。

4.也就是類似這樣的環境變數不要存放在這個位置,應該放在這段指令碼內容的後面。

四、解決方式:
解決方式很簡單,就是把java環境變數的配置放置到/etc/profile檔案的最末尾。如圖