完美解決 ubuntu 配置環境變數後不能登入

來源:互聯網
上載者:User

今天,在我的電腦上裝上了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

哈哈 這樣就搞定,簡單吧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.