2013-01-04 41 views
1

我的问题进行变量的变化是自descripting:传播由副执行脚本

script1.sh包含:

#!/bin/sh 
export SOMEVAR=0 
echo "1, SOMEVAR=$SOMEVAR" 
./script2.sh 
echo "2, SOMEVAR=$SOMEVAR" 

script2.sh包含:

#!/bin/sh 
SOMEVAR=1 

./script1.sh给出:

1, SOMEVAR=0 
2, SOMEVAR=0 

而我想:

1, SOMEVAR=0 
2, SOMEVAR=1 

我该如何获得想要的结果?

回答

4

使用source(又名.),而不是调用脚本,子进程不能改变父母的环境:

#!/bin/sh 
export SOMEVAR=0 
echo "1, SOMEVAR=$SOMEVAR" 
. ./script2.sh 
echo "2, SOMEVAR=$SOMEVAR"