linux中fork, source和exec的区别

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

* exec (exec /directory/script.sh)

exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本。 被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别

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 by default…”

./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: $$”

echo “2.sh get \$A=$A from 1.sh”

A=C

export A

echo “2.sh: \$A is $A”

然後,分别跑如下参数来观察结果:

$ ./1.sh fork

$ ./1.sh source

$ ./1.sh exec

[1][2]

效果只能是既费时又没有胜利,再聪慧的人也没法成学。

linux中fork, source和exec的区别

相关文章:

你感兴趣的文章:

标签云: