System V init 脚本无法访问系统范围的变量

System V init 脚本无法访问系统范围的变量

/etc/init.d/我在 中有一个名为 的脚本foo.sh,它运行六个 (JAVA) Spring Boot jar。所有 jar 都需要环境变量才能运行。此脚本已rc.d通过添加到update-rc.d foo.sh defaults。所需的环境变量已添加到/etc/environment/

每当我重新启动服务器时,脚本都会运行,但其中一个 Java 模块找不到环境变量,其他 5 个模块运行正常。如果我尝试手动运行脚本,它完全没有问题。我已经运行了无数次,以确定问题是否出在 Java 代码中,但事实并非如此。

这里究竟发生了什么,我该如何解决它,以便在重新启动时所有 jar 都可以访问全局环境变量?

答案1

我无法确切地告诉你为什么会发生这种情况,但我可以建议几点。

您始终可以在该目录中创建一个简单的测试脚本,并以与其他 jar 相同的方式调用它,只需显示环境即可:

#!/bin/sh
echo "$(env)" >/tmp/env-test

其次,您始终可以将任何想要在命令中使用的环境变量添加到前面,例如:

FOO=bar 我的命令

这对于使用变量临时运行命令而不必设置它通常很有用。

相关内容