2018-07-31 孙小北

Shell 脚本中调用另一个 Shell 脚本

养浩然之气,做博学之人

在Linux平台上开发,经常会在console(控制台)上执行另外一个脚本文件,常用的方法有:

./test.sh 

source test.sh

. test.sh

在Shell 脚本中调用另一个 Shell 脚本,主要以下有几种方式:

fork: 如果脚本有执行权限的话,path/test.sh。如果没有,sh path/test.sh。

exec: exec path/test.sh

source: source path/test.sh

fork

fork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调用 
foo.sh 这个脚本,比如如果是 foo.sh 在当前目录下,就是 ./foo.sh。运行的时候 terminal 会新开一个子 Shell 执行脚本 foo.sh,子 Shell 执行的时候, 父 Shell 还在。子 Shell 执行完毕后返回父 Shell。 子 Shell 从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回父 Shell。

新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 Shell

exec

exec 与 fork 不同,不需要新开一个子 Shell 来执行被调用的脚本. 被调用的脚本与父脚本在同一个 Shell 内执行。但是使用 exec 调用一个新脚本以后, 父脚本中 exec 行之后的内容就不会再执行了。这是 exec 和 source 的区别.

在同一个 Shell 内执行,但是父脚本中 exec 行之后的内容就不会再执行了。

source

与 fork 的区别是不新开一个子 Shell 来执行被调用的脚本,而是在同一个 Shell 中执行. 所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用。

在同一个 Shell 中执行,在被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用,相当于合并两个脚本在执行。





编辑:孙小北

本文地址: https://www.xiaowangyun.com/wyblog/detail/?id=216

版权归属: www.xiaowangyun.com   转载时请以链接形式注明出处

0 条评论

快来评论

物以类聚

最新评论

2017-10-06

一辈子不长,只有珍惜了,才不至于后悔。

2017-10-06

懂得感恩,才能走得更远。

标签云

归档

取消

感谢您的支持,您的每一次打赏都是一次鼓励!

扫码支持
每一次支持,都是不懈的动力

打开支付宝扫一扫,即可进行扫码打赏哦