shell文件的引入问题探讨

        source命令是从 C shell 而来,是bash shell的内置命令,点命令是从Bourne shell而来,是source的别名。在使用效果上,点命令等同于source命令。

source和点命令在引入其它shell文件时,会将该shell脚本文件中定义的变量和函数也一并引入到当前入口脚本环境中,相当于合并shell文件执行,外部shell脚本执行的结果也会反应到当前入口脚本中;而路径引入方式不同,会开启子shell来运行外部脚本,执行的结果也不会反映到当前入口脚本中。

       

测试案例:

a.sh:

#!/usr/bin/env bash
var_a='a'
echo '执行a.sh'

b.sh:

#!/usr/bin/env bash
function test_b () {
    echo 'b'
}
echo '执行b.sh'

我们设定这三个shell文件在同一目录下,入口shell文件为init.sh:

(1)、测试路径引入方式的效果

#!/usr/bin/env bash
./a.sh  # '执行a.sh'
./b.sh  # '执行b.sh'
echo $var_a  # 无输出,空
test_b       # 报错,test_b: 未找到命令

(2) 、使用source和点命令引入方式的效果

#!/usr/bin/env bash
. ./a.sh       # '执行a.sh'
source ./b.sh  # '执行b.sh'
echo $var_a   # 输出 'a'
test_b        # 输出 'b'

对于结果,可以得知source(或点命令) 引入外部shell文件的方式,可以访问外部shell文件中定义的变量和函数,而路径引入方式则不行;两种引入外部shell文件的共同之处是都会执行外部shell文件中的定义的脚本命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值