web-dev-qa-db-fra.com

Problème de sourcing des variables dans Upstart

J'essaie d'utiliser les variables définies dans /etc/environment dans un script confirmé démarrant le 12.04.

Je suis en mesure d'exporter la variable dans le processus enfant, mais pour une raison quelconque, je ne suis pas en mesure de les utiliser dans la strophe de script Upstart elle-même.

Cela marche:

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

Mais si j'essaie d'introduire une logique conditionnelle dans la strophe, elle échouera:

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

Des idées sur la façon dont je peux accéder aux variables à partir de fichiers sourcés à l'intérieur des strophes?

3
techjacker

Cette ligne:

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

n'est pas valide dans un shell conforme à POSIX, mais semble être un bash valide. Je ne vois pas le shell que le parvenu utilise par défaut dans script strophes documentées nulle part, mais il est raisonnable de supposer qu'il utilise /bin/sh, qui n'est pas bas sur les systèmes Debian/Ubuntu.

Essayer:

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

au lieu.

5
Robie Basak