1

我的问题是自我描述的:

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

1 回答 1

4

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

#!/bin/sh
export SOMEVAR=0
echo "1, SOMEVAR=$SOMEVAR"
. ./script2.sh
echo "2, SOMEVAR=$SOMEVAR"
于 2013-01-04T23:01:13.890 回答