让 upstart 从 /etc/environment 中读取服务的环境

让 upstart 从 /etc/environment 中读取服务的环境

将中定义的环境变量提供/etc/environment暴发户服务?

我认为简单地在脚本部分中获取它们是.行不通的,因为脚本的执行sh需要export在每个定义前面添加一个附加内容......

答案1

我终于在 IRC 频道上得到了答案#upstart。在某个时候,upstart 将获得适当的 PAM 支持,从而读取/etc/environment自身。在此之前,诀窍是使用 su 执行命令。su使用 PAM 并将设置适当的环境。示例:

script 
    exec su root -c /usr/sbin/job_needing_envs
end script

答案2

我倾向于使用eval $(cat /etc/environment | sed 's/^/export /')

它获取 中的每一行/etc/environment,将其添加到前面export,然后对其进行评估:

script
exec /bin/bash <<'EOT'
  eval $(cat /etc/environment | sed 's/^/export /')
  do_what_you_need_to
EOT
end script

答案3

将其添加到您的脚本中:

. /etc/environment
export VAR1 VAR2 VAR3

其中,您需要的变量代替了“VAR1”样式的占位符。

相关内容