微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 在bash中,dot命令&符号是做什么的?

我试图理解一个bash脚本,我应该维护并卡住.命令是这种形式:

. $APP_LOCATION/somescript.sh param1 param2 &

该行不是在循环中调用的,也不是从somescript.sh发送回调用脚本的任何返回代码

我知道“.”将使进程在同一个shell中运行.但是“&”将产生一个不同的过程.

这听起来很矛盾.这里到底发生了什么?有任何想法吗?

解决方法:

该脚本在后台进程中运行,但它是一个子shell,而不是一个单独调用的解释器,因为它没有点.

也就是说 – 当前的解释器分叉然后开始运行命令(获取脚本).因此,它继承了shell变量,而不仅仅是环境变量.

否则,将通过execv()调用调用新脚本的解释器,该调用将用新的解释器替换当前解释器.这通常是正确的,因为它提供了更多的灵活性 – 除了为同一个shell编写的脚本之外,你不能运行任何东西.或者源,毕竟,启动一个新的解释器意味着你的另一个脚本可以用Python,Perl,编译的二进制文件等重写,而不需要调用者进行更改.

(这是为什么要执行脚本的原因的一部分,而不是意图来源的库,不应该有文件扩展名 – 为什么bash库应该是.bash,而不是.sh的一部分,这样不准确的信息没有提供他们可以获得什么样的口译员).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐