Проблемные источники переменных внутри Upstart

Я пытаюсь использовать переменные, определенные в /etc/environment, в сценарии upstart, запущенном 12.04.

Я могу экспортировать переменную в дочерний процесс, но по какой-то причине я не могу использовать их в разделе сценария 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

Любые идеи, как я могу получить доступ к переменным из источников файлы в строфах?

3
задан 28 March 2013 в 03:32

1 ответ

Эта строка:

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

недопустима в POSIX-совместимой оболочке, но, похоже, является допустимой Bash. Я не вижу оболочки, которую по умолчанию использует upstart в script разделах, задокументированных где-либо, но разумно предположить, что она использует /bin/sh, что не является bash в системах Debian / Ubuntu.

Попробуйте:

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

вместо.

0
ответ дан 28 March 2013 в 03:32

Другие вопросы по тегам:

Похожие вопросы: