我的主目录中有两个shell脚本a.sh
和b.sh
。在a.sh中,我调用b.sh作为
sh b.sh
我也可以通过以下方式实现
. b.sh
请告诉我调用之间的区别。
谢谢, LinuxPenseur
答案 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脚本中使用的内容,但性能差异对于大多数用途可能并不重要。在采购脚本时,信号处理也有一些细微之处。