2

我的脚本末尾有以下内容:

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

没有这样的文件,因为我的帐户不存在 /home/usr/ 文件夹。但这仍然没有说明为什么它没有将其他值添加到路径变量中。

4

1 回答 1

3

我猜你在没有采购的情况下调用了你的脚本。例如,如果您的脚本名为“myscript.sh”,您可能已调用“./myscript.sh”或“bash myscript.sh”。您在脚本中对 env var 的修改不会泄露脚本,您需要获取它(首先使用 'source' 或 '.' 调用它)。例如:

. ./myscript.sh

myscript.sh 中的更改将修改您当前的环境。

对于 "env $PATH" :我认为这是一个错误,因为您试图在 "PATH" 变量中运行命令。哪个不存在(/usr/kerberos/bin:/bin:... 不是系统上现有文件的名称!)。您应该改用: echo $PATH

于 2012-04-17T12:50:31.693 回答