从另一个shell脚本中调用shell脚本的区别

时间:2011-01-11 04:13:32

标签: linux shell scripting

我的主目录中有两个shell脚本a.shb.sh。在a.sh中,我调用b.sh作为

sh b.sh

我也可以通过以下方式实现

. b.sh

请告诉我调用之间的区别。

谢谢, LinuxPenseur

2 个答案:

答案 0 :(得分:5)

第一种方式:

sh b.sh

创建一个子shell并在子shell中运行b.sh.这样做的一个后果是,当你返回a.sh时,b.sh中设置的任何环境变量都会消失。

第二种方法:

. ./b.sh

来源b.sh,因此当b.sh返回时,b.sh中设置的任何env变量都将对a.sh保持可见。

答案 1 :(得分:1)

第二种方式称为“sourcing”,它将脚本拉入并在同一个shell中执行。

你会这样做有两个原因:速度,所以第二个脚本可以在你的第一个脚本中设置环境变量。通常,在运行脚本或程序时,它无法更改调用者的环境。

采购更快,因为它不需要分叉和启动另一个shell进程。您会在某些系统上看到/ etc / init / rc脚本中使用的内容,但性能差异对于大多数用途可能并不重要。在采购脚本时,信号处理也有一些细微之处。