星期一, 5月 14, 2007

修改.bash_profile檔後,產生command not found問題

於上次修改~/.bash_profile的檔案後,產生打任何指令都造成command not found問題。後來發現,是因為~/.bash_profile中Path打錯。但是利用Putty或是本機都無法使用指令去修改該檔案,因為路徑錯誤,已經無法讀取指令檔。

這時候筆者是透過WinSCP去進行修改的動作,將路徑設定正確後,就可以正確執行了。

正確設定

PATH=$PATH:$HOME/bin:/usr/local/hybus-arm-linux-R1.1/bin:.


之前錯誤的設定

PATH=$PATH:$HOME/bin:.
PATH=/usr/local/hybus-arm-linux-R1.1/bin


如果要增加Path,要增加在原有Path冒號":"後面

另外一些值得注意的事,引用至網中人所寫的這篇文章

假設您在自己家目錄的 bin 裡面裝了一個程式﹐如果您要執行這個程式﹐那麼就要輸入絕對的路徑( PATH )才行。但如果您將‘$HOME/bin’這個路徑加在 PATH 裡面﹐然後您就可以只輸入該程式的檔案名稱就可以了。

有時候﹐當您自己寫好一個 script﹐然後興衝衝就忙著試一試﹐結果卻告訴您 command not found 什麼的﹐這可能是由於您忘了加上路徑﹐也就是忘了在檔案名字前面加上‘./’﹐這是告訴系統﹕檔案在當前的目錄之內。如果您覺得這樣太不方便了﹐可以在 ./bash_profile 裡面的 PATH 加上“:.”就可以了。在 PATH 中的路徑﹐都是用“:”來分隔的﹐所以﹐您的PATH看上去就應該有點像這樣﹕


PATH=$PATH:$HOME/bin:.


不過﹗現在的Linux 都不建議您將當前目錄路徑(即“.”) 放進PATH中﹐為什麼﹖多謝 Neil Lee 兄的幫我們解釋﹕“如果某心存不良的 user 在自己的目錄下放了一個破壞系統的檔案(or病毒),又碰巧你用 root 去執行他,那不就完蛋了?舉個例子說,有個傢伙在他的目錄下寫了一隻叫做 ls 的病毒,如果你的 root 的 path設定了 ./ ,剛好你又 cd 到那個目錄下,一執行 ls 就中了那個傢伙的圈套了。”所以﹐不要貪圖這個方便﹐檢查您的 PATH 設定﹐將 " . " 拿掉吧﹗

Tips﹕修改了環境設定檔後﹐通常會在您下次登錄的時候才生效。如果您想讓設定馬上生效﹐可以執行 soure 命令﹐例如 source ~/.bashrc﹐就可以了

沒有留言: