了解bash与sh中的export语法的区别,感兴趣的朋友可以参考下。
这个问题是在Solaris 10上运行公司的一个产品的时候发现的。
复制代码代码如下:
$ export JAVA_HOME=/usr/jdk/jdk1.6.0_14
$ JAVA_HOME=/usr/jdk/jdk1.6.0_14
-bash-3.00$ export JAVA_HOME=/usr/jdk/jdk1.6.0_14 期间,我还专门比对了下Bourne shell(sh)和Bourne again shell(bash)的区别,可以看到sh和bash对export有不同的语法要求。 可以看到,bash是允许export和变量赋值放在同一行的,sh是不允许的。然后翻书,查看shell圣经(classic shell scripting),发现在第6章讲变量时候有这么一句话:"最初的Bourne Shell会要求你使用一个两步骤的进程:也就是,将赋值和导出(export)或者只读(readonly)的操作分开(如前所示)。POSIX标准允许你将复制与命令的操作结合在一起",呃,也就是说,我在Solaris 10上使用的默认shell实际上遵循的是老的标准。话说这个启动程序使用的#!后面的shell解释器以及我系统默认shell 解释器都是/usr/bin/sh,看样子,以后要注意这个问题了。 (责任编辑:IT) |