我有一个从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源的键值对文件中。