假设我有一个脚本script1.sh
,像
#!/bin/bash
#do something
export THING="a"
source script2.sh & #so running in background
sleep 1 #or do something
export THING="b"
source script2.sh & #so running in background
输出变量THING
,由script2.sh
读取:
#!/bin/bash
echo "PRINT1: ${THING}"
sleep 5
echo "PRINT2: ${THING}"
假设script2.sh
"冻结"是否正确?呼叫时THING
的值是多少?(也就是说,即使在后台运行,它也不会在执行过程中改变)。
我对此进行了测试,似乎是这样,但我想检查它是否符合预期的一般行为。
提前感谢,SL
是否可以假设script2.sh正在"冻结"?通话时THING的价值是多少?
是的。该值不是"frozen",可以修改。这只是一个拷贝。
每个进程都有自己的环境。子进程是在创建子进程时作为当前环境的副本创建的。