天天看点

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

执行shell脚本的三种方式包括:

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

2.直接指定文件名

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

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

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

脚本执行的只是打印一个变量,同时也过滤了当前脚本名的进程

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

根据上面的打印结果,重点关注下面三个特征:

1)脚本可以直接执行,尽管并没有执行权限。因为这时候我们只需要有/bin/bash的执行权限和脚本的读权限就够了,脚本名只是作为了/bin/bash的参数而已。

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

2)shellTest.sh在执行时由bash创建了一个子进程,可以看到父进程20982是bash

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

我们登录终端使用的shell默认就是/bin/bash

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

3)脚本中定义的变量在退出脚本之后就被销毁了

2.直接指定文件名

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

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

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

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

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

1)这种方式执行,不需要脚本的执行权限。

2)脚本在执行过程时,没有创建子进程,执行脚本中那些命令的就是当前的bash进程20982,所以脚本第一行的#!/bin/bash都是没有必要的了。

3)这次变量的值可以打印出来了,这根本原因就是执行脚本中的命令事当前终端的的shell执行的,并没有创建子进程。

继续阅读