一、問題產生
配置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作用
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
只需要把自己之前添加的內容刪除掉就可以了(最好是能修改成正確的,搞不定也要至少恢復原狀吧),然後保存重啓系統。
正常狀態下重啓使用:sudo reboot
當然現在也不行,要使用 /usr/bin/sudo /sbin/reboot
第二篇文章:
在Ubuntu下配置Android的環境時,想像在Windows中那樣在終端中直接啓動adb,以爲Linux和Windows一樣,將adb的路徑添加到環境變量中,於是將adb的路徑也export到/etc/profile中,可杯具了,重啓系統後,無限循環登錄界面,經多方查找資料找到了解決辦法。
辦法如下:
1. 進入了登錄界面後,不用輸入密碼,按住Ctrl+Alt+F1(聽說F1~F6都行)
2. 進入了ubuntu的命令行界面,先輸入用戶名回車,然後輸入密碼回車(純新手,不懂,習慣的直接密碼了,折騰了很久)
3.1 輸入sudo vi /etc/profile,打開了profile文件,將多餘的語句刪除掉,輸入:wq回車保存,輸入 sudo reboot重啓。
(
3.2 另一方法:
在桌面中操作,
進入了命令行界面,輸完用戶名和密碼;
輸入startx,進入了桌面界面,使用Alt+T打開終端,在終端中輸入sudo gedit /etc/profile編輯環境變量,將多餘的語句刪除掉,點保存後關掉,在終端中輸入sudo reboot 重啓。
)
在登錄界面輸入密碼就OK了