source sh执行脚本的区别

主要有两种方式执行shell脚本

1)source test.bsh

2)sh test.bsh


1)souce执行脚本文件会在父程序中执行,各项动作都会在原本的bash内生效,执行过程不另开进程,脚本文件中设定的变量在当前shell中可以看到;

如下例子:


其中sh文件内容如下:


就是通过read命令从命令行中读取两个字符串firstname和lastname,作为一个完整的人名最后在屏幕上输出。source执行该文本文件时正确输出,source还可以用“.”直接替换

source执行文件可以这样理解:


2)sh执行脚本文件是在当前进程另开子进程来执行脚本命令,脚本文件中设定的变量在当前shell中不能看到。使用这种执行方式时,其实script实在子程序的bash中执行的,当子程序完成之后,子程序内的各项变量或者动作将会结束而不会传回到父程序中。对比第一张图我们可以得到下面的结果:


当sh文件执行完毕之后,子程序bash中的所有数据便被移除。可以这样理解

"./"执行结果和sh执行结果相同。

值得注意的是:一般当我们想要让某些写入~/.bashrc(如环境变量)生效的时候,都需要注销系统,重新开启服务,当我们不注销系统就想要使写入生效的时候,我们就可以使用source ~/.bashrc而不是使用sh ~/.bashrc.




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值