Shebang
计算机程序中, shebang 指的是出现在⽂本⽂件的第⼀⾏前两个字符 #!
在Unix系统中,程序会分析 shebang 后⾯的内容,作为解释器的指令,例如
以 #!/bin/sh 开头的⽂件,程序在执⾏的时候会调⽤ /bin/sh ,也就是bash解释器
以 #!/usr/bin/python 开头的⽂件,代表指定python解释器去执⾏
以 #!/usr/bin/env 解释器名称 ,是⼀种在不同平台上都能正确找到解释器的办法
注意事项:
如果脚本未指定 shebang ,脚本执⾏的时候,默认⽤当前shell去解释脚本,即 $SHELL
如果 shebang 指定了可执⾏的解释器,如 /bin/bash /usr/bin/python ,脚本在执⾏时,⽂件名会作为
参数传递给解释器
如果#!指定的解释程序没有可执⾏权限,则会报错“bad interpreter: Permission denied”。
如果#!指定的解释程序不是⼀个可执⾏⽂件,那么指定的解释程序会被忽略,转⽽交给当前的SHELL去执⾏
这个脚本。
如果#!指定的解释程序不存在,那么会报错“bad interpreter: No such file or directory”。
#!之后的解释程序,需要写其绝对路径(如:#!/bin/bash),它是不会⾃动到$PATH中寻找解释器的。
如果你使⽤"bash test.sh"这样的命令来执⾏脚本,那么#!这⼀⾏将会被忽略掉,解释器当然是⽤命令⾏中显
式指定的bash。
脚本案例
系统⾃带的bash脚本,开机启动脚本
脚本注释,脚本开发规范
在shell脚本中,#后⾯的内容代表注释掉的内容,提供给开发者或使⽤者观看,系统会忽略此⾏
注释可以单独写⼀⾏,也可以跟在命令后⾯
尽量保持爱写注释的习惯,便于以后回顾代码的含义,尽量使⽤英⽂、⽽⾮中⽂
[root@chaogelinux data]# cat test.sh
#!/bin/bash
echo "超哥强呀,奥⼒给"
#!/bin/bash 这⾥就是注释的作⽤了
[root@chaogelinux data]# head -1 /etc/rc.d/init.d/network
#! /bin/bash
#! /bin/bash
# Date : 2019-11-28 14:59:18
# Author:created by chaoge
# Blog:www.cnblogs.com/pyyu
www.apecome.com
猿来教育Linux云计算