结论:
fork相当于开了一个新的子进程.但是子进程中不会修改父进程中的变量.
source相当于把代码引入到当前代码中,并不会开新进程. 会修改原来代码中的变量
exec有点象函数调用,但是不会返回原来的父进程..
个人理解,有错误请指出,谢谢
具体代码参考网中人提供的例子
1.sh
#!/bin/bash
a=b
echo “pid for 1.sh before exec/source/fork: $$”
export a
echo “1.sh \$a is $a”
case $1 in
exec)
echo “using exec…”
exec ./2.sh;;
source)
echo “using source…”
. ./2.sh;;
*)
echo “using fork…”
./2.sh;;
esac
echo “pid for 1.sh after exec/source/fork: $$”
echo “1.sh \$a is $a”
2.sh
#!/bin/bash
echo “pid for 2.sh is: $$”
echo “2.sh get \$a=$a from 1.sh”
a=c
export a
echo “2.sh \$a=$a”
发表评论