这三个命令都是在当前的Shell中执行脚本文件中的命令,而不新建进程。
在当前Shell中执行脚本文件中的命令。
exec/source/. ShellScript
exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。如果在当前Shell中使用exec,执行完后将退出当前Shell,因此exec通常放在脚本里面使用,而不是直接在命令中用。
source命令或者"."命令,不会为脚本新建Shell,而只是将脚本包含的命令在当前Shell执行,执行完返回当前Shell。
下面的例子显示source和.命令在当前Shell中执行脚本文件中的命令,而sh(bash)是新建一个子Shell:
[peter@ibi98 source]$ cat test.sh #!/bin/bash echo $$ [peter@ibi98 source]$ echo $$ #当前Shell的PID 1602 [peter@ibi98 source]$ sh test.sh #新建子Shell的PID 1785 [peter@ibi98 source]$ source test.sh #当前Shell的PID 1602 [peter@ibi98 source]$ . test.sh #当前Shell的PID 1602
exec执行结果与source和.命令一样,但执行完后退出当前Shell。