如何设置一个环境变量,它将路径与另一个环境变量一起存储,但不会扩展

如何设置一个环境变量,它将路径与另一个环境变量一起存储,但不会扩展

我想知道如何设置一个存储其他环境变量的环境变量,但是当我回显时这些环境变量不会扩展,如果我使用eval echo则它应该扩展。

就像我想要的echo $TEST_HOME那样/Users/krysto/$PATH/$DATA_DIR

答案1

TEST_HOME使用单引号创建以防止 bash 扩展:

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

然后,可以使用 eval 来扩展它。例如:

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

几点说明: 惯例是,重要的系统变量(如PATHHOME)全部大写。如果要避免覆盖其中一个变量,请将变量设为小写。特别是,覆盖 PATH 可能会使您所在的 shell 基本无法运行。

答案2

只需转义变量(本地或环境变量没有区别),例如

> test="echo something"
> test1="\$test"
> echo $test1
$test
> eval $test1
something

相关内容