可以在没有 envdir 的情况下将环境变量传递到 chpst 吗?

可以在没有 envdir 的情况下将环境变量传递到 chpst 吗?

我使用 runit 来守护我的 Web 应用程序,并且我试图看看我是否可以让我的进程管理sv而不必有一个对应envdir的环境变量。我想知道是否可以将这些变量直接传递到我的调用中chpst。这是run以下文件/etc/service/myapp

#!/bin/sh
exec 2>&1
cd /var/www/myapp
# what it currently looks like
exec chpst -u www-data:www-data /var/www/myapp/myapp
# what I'd ideally like to be able to do
FOO=bar BAZ=qux exec chpst -u www-data:www-data /var/www/myapp/myapp

正如我所提到的,chpst还提供了一个-e选项,可以直接将环境变量传递给它,我可以使用它,但为了简单起见,我试图避免它(需要维护的东西更少)。这有可能吗?尖端?

答案1

您可以在调用应用程序之前使用“env”参数传递环境。我已经在单个环境中完成了此操作,但我不确定如何提供多个 envariables

exec chpst -u www-data:www-data env LOGNAME='www-data' /var/www/myapp/myapp

答案2

做就是了:

FOO=bar BAZ=qux exec chpst -u www-data:www-data /var/www/myapp/myapp

如果有人知道/bin/sh这在哪里不起作用,我很想听听它,但是您希望能够执行的这一行将完全按照您希望的方式在我尝试过的每个 shell 上工作。

相关内容