在启动时在SuSe init.d脚本上找不到环境variables

我有一个/etc/init.d/tomcat1脚本,它在rc级别3和5上启动时运行。此脚本在启动时调用/usr/local/tomcat1/bin/startup.sh

虽然我可以从控制台手动执行/usr/local/tomcat1/bin/startup.sh ,但在启动时,我在/var/log/boot.msg得到以下内容:

 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program 

之后,我在/etc/init.d/boot.local添加了以下内容:

 export JAVA_HOME="/usr/local/java" 

但是我仍然收到关于JAVA_HOME丢失的信息。

我最终做的是修改/usr/local/tomcat1/bin/catalina.sh并硬编码如下:

 JAVA_HOME="/usr/local/java" 

Tomcat现在可以在启动时启动,但是我知道在catalina.sh脚本中硬编码并不好。

所以问题是,我怎样才能设置/导出JAVA_HOME ,使其可以从启动时运行的脚本读取?

谢谢

把你的修改放到/etc/profile.local这样他们就可以加载所有的用户。 在这种情况下,将JAVA_HOME=/usr/local/java放在该文件中就足够了。

/etc/boot.local在给定运行级别的所有其他脚本之后运行,所以在其他脚本中将看不到其他脚本。 对于上面的示例工作,您需要将以下内容放在boot.local

 export JAVA_HOME=/usr/local/java /usr/local/tomcat1/bin/startup.sh 

即设置环境variables,然后启动启动脚本。