shell脚本的3种执行方式分析

6 篇文章 0 订阅

执行shell脚本的三种方式包括:
1.使用“解释器 + 文件名”的方式
2.直接指定文件名
3.使用“source + 文件名”的方式

这里文件名可以用相对路径也可以用绝对路径。如果文件所在路径被加入到$PATH中,甚至可以不指定路径,直接指定脚本名即可。

1.使用“解释器 + 文件名”的方式

脚本执行的只是打印一个变量,同时也过滤了当前脚本名的进程
在这里插入图片描述
根据上面的打印结果,重点关注下面三个特征:
1)脚本可以直接执行,尽管并没有执行权限。因为这时候我们只需要有/bin/bash的执行权限和脚本的读权限就够了,脚本名只是作为了/bin/bash的参数而已。
在这里插入图片描述
2)shellTest.sh在执行时由bash创建了一个子进程,可以看到父进程20982是bash
在这里插入图片描述
我们登录终端使用的shell默认就是/bin/bash
在这里插入图片描述
3)脚本中定义的变量在退出脚本之后就被销毁了

2.直接指定文件名

如果直接指定文件名,在命令中不指定解释器,脚本是执行不了的,这时候需要在脚本中显式的指明所用的解释器。

在这里插入图片描述
这种执行方式,需要执行权限,因为我们执行的就是shellTest.sh这个脚本。其他特征和第一种方式没有区别,仍然创建了一个子进程,变量仍被销毁,

3.使用“source + 文件名”的方式

在这里插入图片描述
1)这种方式执行,不需要脚本的执行权限。
2)脚本在执行过程时,没有创建子进程,执行脚本中那些命令的就是当前的bash进程20982,所以脚本第一行的#!/bin/bash都是没有必要的了。
3)这次变量的值可以打印出来了,这根本原因就是执行脚本中的命令事当前终端的的shell执行的,并没有创建子进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值