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
命令执行的结果一样。