1. 程式人生 > >source配置檔案不生效

source配置檔案不生效

問題背景:

      升級jdk 1.8之後,啟動時報版本編譯問題,檢視$JAVA_HOME,$JRE_HOME,沒有問題。

     初步推斷是沒有source,sourec .bashrc 之後檢視$JAVA_HOME,$JRE_HOME變成1.8版本,但啟動時還是報錯,這就奇怪了,執行java -version檢視到的版本號是1.8,檢視/etc/profile,.bashrc 中配置的JAVA_HOME都沒有問題。

     新開個putty視窗,重新登入後,檢視JAVA_HOME還是原來的配置1.7版本,新的配置沒有生效,執行java -version命令看到的JDK卻是1.8版本,推斷可能是環境變量出了問題,

檢查了/etc/profile,.bashrc沒有問題,查看了使用者用的shell型別(bsh,csh設定環境變數的命令不一樣)都是bsh,在/etc/profile中配置如下

#JDK Environment
export JAVA_HOME=/opt/java/jdk1.8.0_74
export JRE_HOME=/opt/java/jdk1.8.0_74/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib:${JAVA_HOME}/lib/tools.jar
export PATH=${PATH}:${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin:${TOMCAT_HOME}/bin

為了檢查每個每個環境變數是否生效,每個都echo 了一遍,發現執行echo $PATH的時候,咦裡面居然包括原來jkd 1.7路徑,進一步推斷出是環境變數的問題,設定的環境變數是生效了,但是登入的時候被重新覆蓋了。

 問題已經明確了,需要找出JAVA_HOME變數在哪被覆蓋,用命令搜居然沒搜到,後來才想起環境配置檔案的載入順序...汗。。。

終於在.profile中發現JAVA_HOME的配置,找到問題所在,註釋掉就OK了

原因分析:

  linux登入是讀取環境配置檔案的順序如下

  1.   /etc/profile
  2. ~/.bash_profile
  3. ~/.bash_login
  4. ~/.profile

而專案組配置檔案就/etc/profile,.bashrc兩個,而忽視了對其他配置項的檢查,前面配置的JAVA_HOME在~/.profile中覆蓋了,導致了前面所描述的問題

~/.bash_profile在SUSE中這個檔案命名為.bashrc

解決方案:

註釋掉多餘的環境變數配置

連結:

http://liuzhijun.iteye.com/blog/1744465