今天,在我的電腦上裝上了JDK ,配置好環境變數後。發現,登入的時候,不能登入(即在登入不到幾秒的時間
後又重新的回到了登入介面!)
搞得我很鬱悶!
具體的解決辦法聽我一一道來,完美解決,你不用再去鬱悶擔心,如果你配置完ubuntu 然後進不去圖形介面,然後你就重啟電腦,然後再shift+alt+f1鍵進入ubuntu的終端模式下面進行操作,然後你就建立一個root使用者(如果有就不用了)建立root使用者方法:sudo passwd root 建立完root使用者 然後就以root身份 進入你之前配置過的環境變數 配置的哪個就把哪個刪除掉,用vi操作,然後重啟,就完全恢複原來的問題,然後再看下面的文章,究竟是什麼東西在作怪。
尋找錯誤後才發現,原來,ubuntu 再啟動的時候讀取設定檔,並設定環境變數的順序是這樣的:
1、在登入時,作業系統定製使用者環境時使用的第一個檔案就是 /etc/profile ,此檔案為系統
的每個使用者佈建環境資訊,當使用者第一次登入時,該檔案被執行。
2、在登入時作業系統使用的第二個檔案是 /etc/environment ,系統在讀取你自己的profile
前,設定環境檔案的環境變數。
3、在登入時用到的第三個檔案是.profile檔案,每個使用者都可使用該檔案輸入專用於自己使
用的shell資訊,,該 檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者
的.bashrc檔案。/etc/bashrc:為每一個運行bash shell的使用者執行此檔案.
當bash shell 被開啟時,該檔案被讀取.
因此,查看我的設定檔後發現!原來錯誤就出現在這裡,這是我原來的.profile設定檔
export JAVA_HOME=/usr/jdk1.6.0_21
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
因為,系統啟動時會先讀取/etc/profile , 然後讀取 /etc/environment ,最後才是.profile 文
件。而在/etc/environment 檔案中也設定有環境變數PATH ,系統讀取後慧淨環境變數設定
為: ()
這時,如果你在.profile 中也設定了環境變數PATH ,就會覆蓋原來/etc/environment 中設定
的環境變數PATH !
所以,問題就出在了這一步!
那麼解決辦法就是,在設定.profile 的環境變數時,在PATH=的最前面加上 $PATH
修改後的.profile 檔案如下:
export JAVA_HOME=/usr/jdk1.6.0_21
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
至此,問題完美解決。
另外一篇
| 在Ubuntu作業系統下配置JDK環境變數導致系統無法登入 這個問題兩步搞定 第一、找到 /etc/environment檔案,這個檔案是系統預設載入的環境變數檔案;同於在我們配置的jdk環境變數後,jdk環境變數會霸佔/etc/environment下的環境變數,當你登入系統時無法進行,當使用者驗證通過學後,系統老是重新啟動,無法登入。其實我們知道在ubuntu下配置JDK的全域環境變數是在/etc/profile檔案中配置 ,所以我們只要把environment檔案中的系統預設的環境變數拷貝到profile檔案中的PATH中就行了啦。 第二、配置/etc/profile檔案內容如下: # /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r $i ]; then . $i fi done unset i fi if [ "$PS1" ]; then if [ "$BASH" ]; then PS1='/u@/h:/w/$ ' if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1='$ ' fi fi fi JAVA_HOME=/opt/java/jdk1.6.0_22 export JAVA_HOME PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$JAVA_HOME/bin export PATH CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jir/lib export CLASSPATH umask 022 哈哈 這樣就搞定,簡單吧 |