shell 脚本各种执行方式(source ./*.sh, . ./*.sh, ./*.sh)的区别

本文详细探讨了Shell脚本的两种主要执行方式:通过.sh命令执行与使用source命令执行的区别。通过实验验证了不同执行方式下变量的作用域及继承特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文出处:http://blog.youkuaiyun.com/dance_rise/article/details/8573560

结论一: ./*.sh的执行方式等价于sh ./*.sh或者bash ./*.sh,此三种执行脚本的方式都是重新启动一个子shell,在子shell中执行此脚本。

结论二: .source ./*.sh和 . ./*.sh的执行方式是等价的,即两种执行方式都是在当前shell进程中执行此脚本,而不是重新启动一个shell 而在子shell进程中执行此脚本。

验证依据:没有被export导出的变量(即非环境变量)是不能被子shell继承的

验证结果:

[root@localhost ~]#name=dangxu       //定义一般变量
[root@localhost ~]# echo ${name}
dangxu
[root@localhost ~]# cat test.sh      //验证脚本,实例化标题中的./*.sh
#!/bin/sh
echo ${name}
[root@localhost ~]# ls -l test.sh    //验证脚本可执行
-rwxr-xr-x 1 root root 23 Feb  6 11:09 test.sh
[root@localhost ~]# ./test.sh        //以下三个命令证明了结论一

[root@localhost ~]# sh ./test.sh

[root@localhost ~]# bash ./test.sh

[root@localhost ~]# . ./test.sh     //以下两个命令证明了结论二
dangxu
[root@localhost ~]# source ./test.sh
dangxu
[root@localhost ~]#





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值