Upstart 内部变量获取问题

Upstart 内部变量获取问题

/etc/environment我正在尝试使用在 12.04 上运行的 upstart 脚本中定义的变量。

我能够将变量导出到子进程,但由于某种原因,我无法在 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

这一行:

if [[ ${NODE_ENV} = 'production' ]]; then

在符合 POSIX 标准的 shell 中无效,但似乎在 bash 中有效。我没有在script任何地方的节中看到 upstart 默认使用的 shell,但可以合理地假设它使用/bin/sh,这不是 Debian/Ubuntu 系统上的 bash。

尝试:

if [ "${NODE_ENV}" = 'production' ]; then

反而。

相关内容