我想知道为什么在服务启动期间环境变量不可见。更准确地说:我根据 LSB 规范创建了服务启动脚本,该脚本启动一些 java 进程。为此,首先检查 JAVA_HOME 环境变量。该环境变量在 /etc/profile.d/java.sh 中设置。这可能在启动服务时没有执行。我想了解这个过程以及在这种情况下正确的解决方案是什么?
答案1
RC 脚本作为非交互式 shell 脚本调用。因此他们不读取/etc/profile。因此,您必须在脚本中显式定义变量。要么直接在脚本中使用,要么使用一些(掩盖)大量 RC 脚本使用的技术(在 /etc/sysconfig/$package 中定义的主要变量)。
看看 tomcat6 是如何做到这一点的(尽管根据我的观点,它相当复杂)。