2012-04-17 76 views
2

在我的腳本結束時,我有以下幾點:Path變量沒有被設定新值

export PATH=/usr/openwin/bin:/opt/plat/AUTOSYS/4.0/autosys/bin:/usr/kerberos/bin::/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/opt/netezzaClient/bin:/xenv/ant/X/1.8.0/bin:/export/opt/jdk/1.6.0_16/bin:$PATH 
export JAVA_HOME=/export/opt/jdk/1.6.0_16 
echo "END PATH - $PATH" 

它打印此。

END PATH - /usr/openwin/bin:/opt/plat/AUTOSYS/4.0/autosys/bin:/usr/kerberos/bin::/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/opt/netezzaClient/bin:/xenv/ant/X/1.8.0/bin:/export/opt/jdk/1.6.0_16/bin:/opt/edtsesn/share/bin:/xenv/cvs/sun4/5.6p4/1.10/bin:/xenv/rationalrose/sun4/5.x/6.0.9242/rose/bin:/opt/netscape/4.70_B2/bin:/opt/SCssh/3.4_C0/bin:/opt/PDolvwm/bin:/usr/kerberos/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/ucb:/usr/bin:/usr/local/etc:/bin:/usr/local/bin:/etc:/software/scripts:/usr/5bin:/usr/demo:/usr/openwin/bin:/usr/tran/sparc/lib:/usr/ccs/bin:/opt/sybase/1192/bin:/tmp/wm40824:/opt/edtsdba/bin:/xenv/scripts/bin:/xenv/workshop/sun4/5.8mu4/6.1a/bin:/home/pj03962/1192/bin:/home/pj03962/1192/bin:/xenv/java/X/1.6.0_11/bin:/xenv/cvs/:/xenv/java/X/1.6.0_11/bin:/xenv/cvs/sun4/5.6p4/1.10/bin:/xenv/ant/sun4/5.x/1.6.2/bin:/opt/SCssh/3.7.1_C0/bin:/opt/xemacs/bin:/home/pj03962/125/OCS-12_5/bin:/home/pj03962/125/125/bin:/opt/perforce/bin:/opt/netezzaClient/bin:/opt/netezzaClient/bin 

bash-3.00$ env $PATH 
env: /usr/kerberos/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin: No such file or directory 

沒有這樣的文件來,因爲A /家庭的/ usr /文件夾不爲我的帳戶上。但是這仍然沒有說明爲什麼它沒有將其他值添加到路徑變量中。

+1

你期望'env $ PATH'做什麼? – 2012-04-17 12:42:28

+0

讓我看看設置爲$ PATH的值列表,它現在應該包括打印語句中的值 – Will 2012-04-17 12:44:58

回答

3

我想你已經調用了你的腳本而沒有采用它。 例如,如果您的腳本被命名爲「myscript.sh」,則可能調用了「./myscript.sh」或「bash myscript.sh」。您在腳本中對env var的修改不會泄露腳本,您需要將其源代碼(先用'source'或'。'來調用它)。 如:

. ./myscript.sh 

在myscript.sh的變化會改變當前的環境。

對於「env $ PATH」:我認爲這是一個錯誤,因爲您試圖在「PATH」變量中運行該命令。哪些不存在(/ usr/kerberos/bin:/ bin:...不是系統上現有文件的名稱!)。 你應該改用:echo $ PATH

+1

正確的你! – Will 2012-04-17 12:52:20