/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 我的命令
这对于使用变量临时运行命令而不必设置它通常很有用。