shell脚本的3种执⾏⽅式分析
执⾏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这个脚本。其他特征和第⼀种⽅式没有区别,仍然创建了⼀个⼦进程,变量仍被销毁,shell最简单脚本
3.使⽤“source + ⽂件名”的⽅式
1)这种⽅式执⾏,不需要脚本的执⾏权限。
2)脚本在执⾏过程时,没有创建⼦进程,执⾏脚本中那些命令的就是当前的bash进程20982,所以脚本第⼀⾏的#!/bin/bash都是没有必要的了。
3)这次变量的值可以打印出来了,这根本原因就是执⾏脚本中的命令事当前终端的的shell执⾏的,并没有创建⼦进程。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论