Bash 错误地将空间扩展到';'



我有一个从JPackage RPM库安装的Tomcat7和一个CentOS 6。当我运行/etc/init.d/tomcat7时,Bash生成一个包含';'字符串的java调用命令。这些字符串会破坏Bash命令。

下面是一个有问题的命令:/usr/lib/jvm/jre/bin/java -server -Xmx1024m -Xms128m -XX:PermSize=128m ';' export -Dmykey=myvalue .

有什么可能导致Bash插入这些';'字符串到命令吗?Tomcat7脚本本身不应该引起问题,因为我已经在其他Linux实例上成功地使用了相同的Tomcat7 RPM包及其脚本。

我的问题是由/etc/sysconfig/my_tomcat_instance中的换行字符引起的。

文件包含以下代码片段:

JVM_OPTS="-server -Xmx1024m -Xms128m -XX:PermSize=128m 
    -Dmykey=myval
    -Dmykey2=myval2
    "`

我把它改成

JVM_OPTS="-server -Xmx1024m -Xms128m -XX:PermSize=128m -Dmykey=myval -Dmykey2=myval2"

我的问题消失了,我可以正常启动Tomcat7。

经验教训:不要将换行符放入Bash源的键值对文件中。

最新更新