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
本文介绍了三种不同的shell脚本执行方法:fork、source及exec,并通过实例展示了它们之间的主要区别。fork会在当前进程的子进程中执行脚本,完成后返回到父进程;source则直接在当前进程中执行;exec则会关闭当前进程并重新启动一个新进程来执行脚本。
1304

被折叠的 条评论
为什么被折叠?



