Variáveis de origem de problemas dentro do Upstart

3

Estou tentando usar as variáveis definidas em /etc/environment em um script iniciante em 12.04.

Eu sou capaz de exportar a variável para o processo filho, mas por algum motivo eu não consigo usá-los na própria sub-rotina do script Upstart.

Isso funciona:

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

Mas se eu tentar introduzir alguma lógica condicional na estância, ela falhará:

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

Alguma idéia de como eu posso acessar variáveis de arquivos originados dentro das estrofes?

    
por techjacker 25.03.2013 / 13:33

1 resposta

5

Esta linha:

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

não é válido em um shell compatível com POSIX, mas parece ser um bash válido. Eu não vejo o shell que o upstart usa por padrão em script stanzas documentado em qualquer lugar, mas é razoável supor que ele usa /bin/sh , que não é bash nos sistemas Debian / Ubuntu.

Tente:

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

em vez disso.

    
por Robie Basak 25.03.2013 / 15:19