我的主目录中有两个shell脚本a.sh
和b.sh
。在a.sh我调用b.sh作为在另一个shell脚本中调用shell脚本的区别
sh b.sh
我也能做到这一点通过以下方式
. b.sh
请告诉我调用之间的差异。
感谢, LinuxPenseur
我的主目录中有两个shell脚本a.sh
和b.sh
。在a.sh我调用b.sh作为在另一个shell脚本中调用shell脚本的区别
sh b.sh
我也能做到这一点通过以下方式
. b.sh
请告诉我调用之间的差异。
感谢, LinuxPenseur
第一种方式:
sh b.sh
创建一个子shell和子shell中运行b.sh。其中一个这样做的后果是,当你回到a.sh
第二种方法b.sh设置任何环境变量将会完全消失:
. ./b.sh
来源b.sh,因此当b.sh返回时,在b.sh中设置的任何env vars都将对a.sh保持可见。
第二种方法称为“采购”,它将脚本拉入并在同一个shell中执行。
您会这样做的原因有两个:速度,所以第二个脚本可以在第一个脚本中设置环境变量。通常在运行脚本或程序时,它不能改变调用者的环境。
采购速度更快,因为它不需要分流和启动另一个shell进程。你可以看到它在某些系统上用于/ etc/init/rc脚本,但性能差异对于大多数用途可能并不重要。采购脚本时,信号处理也有一些细微之处。
谢谢blueshift – 2011-01-11 04:22:59
完美..感谢ennuikiller :) – 2011-01-11 04:21:39