我正在尝试在 upstart 脚本中使用 /etc/environment 中定义的变量。
我能够将变量导出到子进程,但由于某种原因,我无法在 upstart 脚本节本身中使用它们。
这有效:
script
. /etc/environment
export NODE_ENV
# node is able to read the NODE_ENV, wonderful!
/usr/local/bin/node /path/to/app/app.js
end script
但如果我尝试在诗节中引入一些条件逻辑,它就会失败:
script
. /etc/environment
export NODE_ENV
# ${NODE_ENV} is not set inside the stanza
if [[ ${NODE_ENV} = 'production' ]]; then
# this will never run
/usr/local/bin/node /path/to/app/app.js
fi
end script
有什么想法可以让我访问节内源文件中的变量吗?我真的不想对这些东西进行硬编码!
答案1
问题在于你使用了“[[”。Upstart 通过 /bin/sh 运行所有脚本。请参阅:
如果你查看作业日志,你应该会看到那里有一个(shell)错误:
sudo cat /var/log/upstart/your-job.log