fork
使用 fork 方式运行 script 时, 就是让 shell(parent process) 产生一个 child process 去执行该 script, 当 child process 结束后, 会返回 parent process,但 parent process 的环境是不会因 child process 的改变而改变的.
source
使用 source 方式运行 script 时, 就是让 script 在当前 process 内执行, 而不是产生一个 child process 来执行. 由于所有执行结果均于当前 process 内完成,若 script 的环境有所改变, 当然也会改变当前 process 环境了.
source ./my.sh 或 . ./my.sh
exec
使用 exec 方式运行script时, 它和 source 一样, 也是让 script 在当前process内执行, 但是 process 内的原代码剩下部分将被终止. 同样, process 内的环境随script 改变而改变.
case的使用
case $1 in
exec)
echo "using exec..."
exec ./2.sh ;;//必须注意后面的两个分号,必须使用两个分号
source)
echo "using source..."
. ./2.sh ;;
*)//此处代表默认配置
echo "using fork by default..."
./2.sh ;;
esac
注意在是用的过程中,变量$1由./hao.sh source这样类似的语句产生