2012-08-01 64 views
0

我正在使用knoppix 7.0.3並嘗試設置PATH環境變量。根據官方的Unbuntu文檔,/ etc/enviroment應該是最好的地方。因此,我增加了文件中的這些行:如何在Knoppix中設置PATH?

JAVA_HOME="/usr/lib/jvm/java-6-sun" 
GRAILS_HOME="/home/knoppix/grails" 
PATH="${PATH}:${JAVA_HOME}/bin:${GRAILS_HOME}/bin" 

但重新啓動系統後,該文件只是恢復到一部開拓創新一個(我用的是持久存儲)。 那麼一些谷歌搜索後,我嘗試編輯〜/ .profile文件是這樣的:

export JAVA_HOME="/usr/lib/jvm/java-6-sun" 
export GRAILS_HOME="/home/knoppix/grails" 
export PATH=$PATH:$JAVA_HOME/bin:$GRAILS_HOME/bin 

這個時候,前兩個變量得到了設置(在控制檯呼應),但路徑沒有。當我回應時,它仍然是默認的一個。怎麼了?

+0

如果你寫的'出口PATH = $ PATH會發生什麼:$ GRAILS_HOME /直接在控制檯和'後回聲$ PATH'權bin':/ bin中$ JAVA_HOME它?你看到'PATH'的值是否正確? – Shahbaz 2012-08-01 14:01:59

+0

@Shahbaz是的,如果只是將它導出到同一個控制檯中,我可以看到PATH值。 – FloatingYeti 2012-08-01 14:07:19

+0

現在好了,關閉控制檯,然後打開另一個('PATH'現在應該重置)。試試'source〜/ .profile'。你是否希望獲得'PATH'的價值? – Shahbaz 2012-08-01 14:08:44

回答

0

問題是你的PATH在bash初始化過程中被覆蓋,在.profile之後。

the manpage of bash來自:

當bash被調用以交互登錄殼,或作爲非交互式殼與--login選項,它首先從文件/ etc /簡檔讀取並執行的命令,如果該文件存在。讀取該文件後,它會按照該順序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,並從第一個存在且可讀的命令讀取和執行命令。當shell開始禁止這種行爲時,可以使用--noprofile選項。

...

當一個交互的shell但不是登錄shell啓動時,bash從中讀取〜/ .bashrc中執行命令,如果該文件存在。這可以通過使用--norc選項來禁止。 --rcfile文件選項將強制bash從文件讀取並執行命令,而不是〜/ .bashrc。

根據您的經驗,很顯然,如果.bashrc不存在時,bash試圖設置PATH爲默認值(如果有人證實了這一點我將不勝感激)。

正如我們在您的問題的評論中所討論的那樣,將export命令添加到.bashrc(並因此創建該文件)解決了該問題。或者,您可以添加

source ~/.profile 

到您的.bashrc文件的結尾以獲得相同的效果。

1

以下行修改/etc/profile

PATH=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"