Substituir variável no valor da variável de ambiente chpst loaded

0

Se eu usar chpst para carregar variáveis de ambiente como:

env BAR=baz chpst -e envdir mycommand

e em envdir tenho um arquivo envdir/FOO com conteúdo

foo$BAR

existe uma maneira para que, por mycommand , o valor de FOO seja foobaz em vez de foo$BAR ?

Obviamente, o acima não funciona; deixa FOO definido para foo$BAR . Eu estou querendo saber se há algo que eu possa fazer para fazer com que a substituição aconteça nos valores das variáveis de ambiente carregadas.

Contexto completo: principalmente, eu tenho variáveis de ambiente que são estáticas quando você escolhe o ambiente, mas em alguns casos elas precisam ser específicas do host. Então, na vida real eu tenho, por exemplo, HOST definido no ambiente de execução com o nome de host apropriado e, em seguida, gostaria de definir algo como API_URL=http://$HOST:8080/ . Eu tenho este trabalho sem usar chpst , mas eu gostaria de usá-lo para gerenciar todas as minhas variáveis de ambiente e funciona perfeitamente em 90% dos casos de uso.

    
por G Gordon Worley III 30.03.2016 / 23:28

1 resposta

0

algo assim talvez? (supondo que o conteúdo do envdir seja confiável)

coloque este arquivo em envdir / run:

#!/bin/bash

for v in 'dirname $0'/* ; do
    if [[ "'basename $v'" = run ]]; then
        continue;
    fi
    eval "export 'basename $v'='cat $v'"
done

exec "$@"

então:

./envdir/run some command
    
por 30.03.2016 / 23:52