como configurar uma variável de ambiente que armazena um caminho junto com outra variável env, mas não expande

0

Eu quero saber como configurar uma variável de ambiente que armazena outra variável de ambiente, mas essas variáveis de ambiente não são expandidas quando eu faço eco, em vez disso, se eu usar eval echo , ela deve se expandir.

Como eu quero que echo $TEST_HOME resulte em /Users/krysto/$PATH/$DATA_DIR

    
por Ciasto piekarz 29.01.2014 / 07:54

2 respostas

1

Crie TEST_HOME usando aspas simples para evitar a expansão do bash:

$ TEST_HOME='/Users/krysto/$MYPATH/$DATA_DIR'
$ echo $TEST_HOME
/Users/krysto/$MYPATH/$DATA_DIR

Então, pode-se usar o eval para expandi-lo. Como exemplo:

$ MYPATH=dir1/dir2
$ DATA_DIR=data/dir
$ eval echo $TEST_HOME
/Users/krysto/dir1/dir2/data/dir

Algumas observações: A convenção é que as variáveis importantes do sistema, como PATH ou HOME , são todas maiúsculas. Se você quiser evitar sobrescrever um deles, coloque suas variáveis em minúsculas. Em particular, substituir o PATH poderia deixar o shell em grande parte não funcional.

    
por 29.01.2014 / 08:01
1

Apenas escape das variáveis (não faz diferença se local ou env), por exemplo

> test="echo something"
> test1="\$test"
> echo $test1
$test
> eval $test1
something
    
por 29.01.2014 / 08:01