如果使用source或者“.”号执行shell脚本(例如叫son.sh),脚本中的所有语句会被作为当前父shell进程的一部分运行。如果son.sh的执行语句source son.sh 或 . son.sh是某个父shell脚本(father.sh)中的一句,那么son.sh脚本中的变量的值或函数返回值等都会被传递到父shell脚本father.sh中使用。

因此,使用source或者“.”号的方法执行shell脚本与使用sh命令执行的最大区别在于前者是在当前shell中加载并执行脚本中的每一行命令,而不是产生一个子shell来执行这些命令。

典型的应用是如果用户修改了家目录下的.bashrc或者.bash_profile等环境信息配置文件,需要按如下方法执行这些文件使改动生效:

$ source .bashrc
$ . .bash_profile