解決Ubuntu環境變量錯誤導致無法正常登錄

 一、問題產生

 

配置JDK時,按照搜索到的一篇文章中的做法,修改了/etc/profile文件裏的內容。在原內容保持不變的基礎上,大致添加了以下內容:

export JAVA_HOME=....

export PATH=....

然而,重啓再次試圖登錄X windows時,發生錯誤。輸入密碼後沒有反應,仍然停留在Login界面。圖形界面登錄不進去,只好Ctrl+Alt+F1進入CLI試試。

 

二、定位問題

 

進入命令行界面,暫時還不知道問題的原因。與平時不同的是,登錄命令行系統返回歡迎信息的後面,還報了很多錯誤。

  

很自然的目光首先停留在最長的那些行上面:

The command could not be located because '/usr/bin:/bin' is not included in the PATH environment variable.

意思是:找不到命令,因爲'/usr/bin:/bin'沒有被包含在環境變量PATH中。

這就是問題產生的原因:環境變量PATH錯誤。聯想到修改/etc/profile文件時確實對PATH進行過操作,所以解決問題的最簡單的方法就是讓/etc/profile恢復到修改之前的狀態。

 

看完錯誤信息,打算清屏進行下一步工作,輸入:clear。同樣報錯:

Command 'clear' is available in '/usr/bin/clear'

The command could not be located because '/usr/bin' in not included in the PATH environment variable.

clear:command not found

又試了幾個其他常用的命令:ls, vim,cat等,錯誤原因相同,均指向環境變量PATH.

 

三、PATH作用

 

LinuxPATH,在windows下配置過JDK的也肯定注意到windows也有path,這個PATH到底是做什麼用的呢? 下面解釋一下:

      當我們在命令行(Linux下的terminal或者tty1~6windows下的cmd中)輸入一個命令時,實際上執行的是一個程序。比如使用 ls 命令,實際上是運行 ls 這個程序,它的功能是列出當前目錄下的內容。但是,默認情況下搜尋要運行的程序時,僅是在當前目錄下尋找的。而我們平時使用的命令不論在哪個目錄下都能執行,難道是每個目錄下都有這些命令的拷貝?當然不是,這樣對空間的浪費太嚴重了。

    現在操作系統採取的普遍做法是,通過PATH變量指定命令存放的位置。一旦使用某個命令時,按照PATH中制定目錄的順序去搜尋指令對應的程序。所以正常情況下,使用echo $PATH查看環境變量PATH的內容如下:

分號 ":" 表示分隔符,分隔各個目錄。

由於PATH錯誤,我在使用指令時系統不能正常到存放指令的目錄中去尋找,因此會提示:Command not found.

 

四、解決方法

 

很人性化的是,系統會提示我們要使用的指令存放的正確位置,比如使用clear時提示的:Command 'clear' is available in '/usr/bin/clear'clear命令是存放在'/usr/bin'目錄下的。

要編輯/etc/profile,正常情況下使用的命令是:sudo vim /etc/profile

現在,系統找不到sudo 命令,也找不到vim命令,所以只能人工指定它們的絕對路徑了。sudo vim 都是存放在'/usr/bin'目錄下的,所以sudovim的絕對路徑分別是:/usr/bin/sudo   /usr/bin/vim

因此要編輯/etc/profile要使用的命令應該這樣寫: /usr/bin/sudo  /usr/bin/vim  /etc/profile

只需要把自己之前添加的內容刪除掉就可以了(最好是能修改成正確的,搞不定也要至少恢復原狀吧),然後保存重啓系統。

  

正常狀態下重啓使用:sudo reboot

當然現在也不行,要使用 /usr/bin/sudo /sbin/reboot

 

第二篇文章:

 

 Ubuntu下配置Android的環境時,想像在Windows中那樣在終端中直接啓動adb,以爲LinuxWindows一樣,將adb的路徑添加到環境變量中,於是將adb的路徑也export/etc/profile中,可杯具了,重啓系統後,無限循環登錄界面,經多方查找資料找到了解決辦法。

辦法如下:

1. 進入了登錄界面後,不用輸入密碼,按住Ctrl+Alt+F1(聽說F1F6都行)

2. 進入了ubuntu的命令行界面,先輸入用戶名回車,然後輸入密碼回車(純新手,不懂,習慣的直接密碼了,折騰了很久)

3.1 輸入sudo vi /etc/profile,打開了profile文件,將多餘的語句刪除掉,輸入:wq回車保存,輸入 sudo reboot重啓。

3.2 另一方法:

在桌面中操作,

進入了命令行界面,輸完用戶名和密碼;

輸入startx,進入了桌面界面,使用Alt+T打開終端,在終端中輸入sudo gedit /etc/profile編輯環境變量,將多餘的語句刪除掉,點保存後關掉,在終端中輸入sudo reboot 重啓。

在登錄界面輸入密碼就OK

發佈了192 篇原創文章 · 獲贊 30 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章