加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 01:04:32 所属栏目:Linux 来源:网络整理
导读:我试图理解一个bash脚本,我应该维护并卡住.命令是这种形式: . $APP_LOCATION/somescript.sh param1 param2 该行不是在循环中调用的,也不是从somescript.sh发送回调用脚本的任何返回代码 我知道“.”将使进程在同一个shell中运行.但是“”将产生一个不同的过
我试图理解一个bash脚本,我应该维护并卡住.命令是这种形式:

. $APP_LOCATION/somescript.sh param1 param2 &

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

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

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

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读