Linux 传播由子执行脚本完成的变量更改
我的问题是自我描述: script1.sh包含:Linux 传播由子执行脚本完成的变量更改,linux,bash,ubuntu,debian,sh,Linux,Bash,Ubuntu,Debian,Sh,我的问题是自我描述: script1.sh包含: #!/bin/sh export SOMEVAR=0 echo "1, SOMEVAR=$SOMEVAR" ./script2.sh echo "2, SOMEVAR=$SOMEVAR" #!/bin/sh SOMEVAR=1 script2.sh包含: #!/bin/sh export SOMEVAR=0 echo "1, SOMEVAR=$SOMEVAR" ./script2.sh echo "2, SOMEVAR=$SOMEVAR"
#!/bin/sh
export SOMEVAR=0
echo "1, SOMEVAR=$SOMEVAR"
./script2.sh
echo "2, SOMEVAR=$SOMEVAR"
#!/bin/sh
SOMEVAR=1
script2.sh包含:
#!/bin/sh
export SOMEVAR=0
echo "1, SOMEVAR=$SOMEVAR"
./script2.sh
echo "2, SOMEVAR=$SOMEVAR"
#!/bin/sh
SOMEVAR=1
/script1.sh给出了:
1, SOMEVAR=0
2, SOMEVAR=0
我想:
1, SOMEVAR=0
2, SOMEVAR=1
如何获得想要的结果?使用源代码(aka.
)而不是调用脚本,子进程无法更改父进程环境:
#!/bin/sh
export SOMEVAR=0
echo "1, SOMEVAR=$SOMEVAR"
. ./script2.sh
echo "2, SOMEVAR=$SOMEVAR"
使用source
(又称
)而不是调用脚本,子进程无法更改父进程环境:
#!/bin/sh
export SOMEVAR=0
echo "1, SOMEVAR=$SOMEVAR"
. ./script2.sh
echo "2, SOMEVAR=$SOMEVAR"