导出的variables在脚本执行后不会保留

我正面临着一个奇怪的问题。 我有一个虚拟机与solaris 11,并试图写一些bash脚本。

如果在shell上,我input:

export TEST=aaa 

然后运行:

 set 

我正确地看到名为TEST的新的环境variables,其值是aaa。 但是,如果我在脚本中做了基本相同的事情。 当脚本终止时,我看不到variables集。 做一个具体的例子,如果在一个文件test.sh我有:

 #!/usr/bin/bash echo 1: $TEST #variable not defined yet, expect to print only 1: echo 2: $USER TEST=sss echo 3: $TEST export TEST echo 4: $TEST 

它打印:

 1: 2: daniele 3: sss 4: sss 

并且在执行之后,TEST没有在shell中设置。 我错过了什么吗? 我试了导出TEST = sss和单独的variables设置/导出没有区别。

导出 – 使variables可用于subprocess,但不能为父进程。

source – 在shell中运行脚本而不创buildsubprocess

对于exalmpe,可以通过写入文件来实现持久variables

 #!/usr/bin/bash echo 1: $TEST #variable not defined yet, expect to print only 1: CONFIGFILE=~/test-persistent.vars if [ -r ${CONFIGFILE} ]; then # Read the configfile if it's existing and readable source ${CONFIGFILE} fi echo 2: $TEST echo 3: $USER TEST=sss echo 4: $TEST echo TEST="$TEST"> ${CONFIGFILE} echo 5: $TEST 

为了使你的variables可见,你需要输出你的variables的脚本。 见man source