结论:

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”


评论

该日志第一篇评论

发表评论

评论也有版权!

click to change验证码