1. 程式人生 > >linux新增環境變數對/etc/profile檔案進行修改過後導致命令用不了

linux新增環境變數對/etc/profile檔案進行修改過後導致命令用不了

在使用java的時候,要新增環境變數。一般我們是export一些變數,比如:

export JAVA_HOME=....

export PATH=$PATH:$JAVA_HOME/bin

但是,當我們在export PATH的時候忘記在等號右邊加紅色的$PATH:的時候會導致我們在使用一些常用命令,比如ls,sudo,vim,clear等系統自帶的命令的時候會出現commond not found的錯誤。

這些錯誤,都是因為PATH環境變數的影響。

知道問題出在哪裡,但是怎麼解決呢?因為sudo、vim都用不了。

linux還是很人性化的,系統會提示我們要使用的指令存放的正確位置,比如使用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

只需要把自己之前新增的內容刪除掉就可以了(最好是能修改成正確的,搞不定也要至少恢復原狀吧),然後儲存重啟系統(或者使用source /etc/profile)就ok了。

PS: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.


原創地址:http://blog.csdn.net/fzhmoive/article/details/18256305