exec和source都属于bash内置命令,执行source和exec的过程中都不会产生新的进程,被调用的脚本与父脚本在同一个Shell进程内执行。source和exec的区别在于exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。所以被调用的脚本中声明的变量和环境变量,都可以在主脚本中得到和使用
总结:
source命令: 不创建子进程,在当前Shell进程中执行脚本,
exec命令: 不创建子进程, 在当前Shell进程中执行脚本,父脚本中exec行之后的内容不会执行
fork属于系统调用, 会创建一个子进程, 父进程会阻塞等待子进程执行结束, 然后继续往下执行
本文转自 kuSorZ 51CTO博客,原文链接:http://blog.51cto.com/kusorz/1827679