Я пытаюсь использовать переменные, определенные в /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
Любые идеи, как я могу получить доступ к переменным из источников файлы в строфах?
Эта строка:
if [[ ${NODE_ENV} = 'production' ]]; then
недопустима в POSIX-совместимой оболочке, но, похоже, является допустимой Bash. Я не вижу оболочки, которую по умолчанию использует upstart в script
разделах, задокументированных где-либо, но разумно предположить, что она использует /bin/sh
, что не является bash в системах Debian / Ubuntu.
Попробуйте:
if [ "${NODE_ENV}" = 'production' ]; then
вместо.