fork 默认,在当前进程的子进程执行,执行完成后,退回到父进程
source 在当前进程执行,执行完成后,退回到父进程
exec 把当前进程关闭,重启一个进程执行。
exec与fork/source的根本区别:exec原有进程会终止,exec之后,原有进程不再执行;fork/source原有进程不会被终止,会继续被执行。
实例:1.sh
2.sh
sh 1.sh fork
PID for 1.sh before exec/source/fork:32432
1.sh: $A is B
using fork by default
PID for 2.sh:32433
2.sh get $A=B from 1.sh
2.sh:$A is C
PID for 1.sh after exec/source/fork:32432
1.sh: $A is B
sh 1.sh source
PID for 1.sh before exec/source/fork:32453
1.sh: $A is B
using source...
PID for 2.sh:32453
2.sh get $A=B from 1.sh
2.sh:$A is C
PID for 1.sh after exec/source/fork:32453
1.sh: $A is C
sh 1.sh exec
PID for 1.sh before exec/source/fork:457
1.sh: $A is B
using exec...
PID for 2.sh:457
2.sh get $A=B from 1.sh
2.sh:$A is C