解決Ubuntu環境變量錯誤導致無法正常登錄  (command 'xxx' is available in bin ls)


  一、問題產生

 

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

export JAVA_HOME=....

export PATH=....

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

 

二、定位問題

 

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

 

解決Ubuntu環境變量錯誤導致無法正常登錄 - windflyer - 邵玉如  的博客

 

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

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作用

 

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

       當我們在命令行(Linux下的terminal或者tty1~6,windows下的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'目錄下的,所以sudo和vim的絕對路徑分別是:/usr/bin/sudo   /usr/bin/vim

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

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

 解決Ubuntu環境變量錯誤導致無法正常登錄 - windflyer - 邵玉如  的博客

 

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM