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.也就是類似這樣的環境變數不要存放在這個位置,應該放在這段指令碼內容的後面。