shell脚本和解释器
#!是shell脚本文件的标识,/bin/bash代表要使用的解析器,#是注释符号
test.sh
#!/bin/bash
ls
whoami
#下面这条命令会执行失败,但不会影响其他命令的执行
cat /etc/shadow
ps
对于上面的脚本文件,后缀是.sh或者是.ext、.xxx都不影响的。
给上述文件,使用下面命令,添加执行权限。
chmod u+x test.sh
执行脚本如下所示,

什么是解释器
解释器实际上是脚本文件,当shell看到脚本文件标记#!,shell会装载解释器文件/bin/bash,然后解释器文件去解析全部的内容。
那么就有疑问?
解释器/bin/bash,解析文件全部的内容,包括第一行的内容即#!/bin/bash,第一行的内容肯定是解析不出来的,但是我们看第一行的内容有#,在shell中#可是注释,所以第一行就不用解析了。真是秒啊!!
看下下面的代码,就更好的理解解释器了
test.sh
#!/bin/cat
ls
whoami
cat /etc/shadow
ps
上面脚本执行,如下图

这就和前面我们说的一样,shell装载/bin/cat,然后使用/bin/cat解析这个文件的内容,那么结果就是打印这个文件里的内容啦。和cat test.sh命令执行的结果一样。


![[HDLBits] Exams/m2014 q4d](https://img-blog.csdnimg.cn/img_convert/b8d5dcb031b10e9c3ac7f81d36e10fa6.png)
















