标准的shell脚本文件中,其第一行通常是:#!/bin/bash 或 #!/bin/sh ,以经典的HelloWorld为例,shell脚本如下:
#!/bin/bash
echo "Hello World!"
那么#!/bin/bash到底是什么含义?
问答这个问题之前,我们先了解下shell版本进化历史,具体可以参考:Linux Shell进化简史
了解完shell版本进化后,我们开始深究#!/bin/bash到底是什么含义:
1、shell脚本是解释性语言
shell脚本需要专门的解析器来解析然后执行,不同的脚本语言需要匹配对应的解析器才能解析执行。#!/bin/bash 表示用/bin/bash解释脚本并执行,#!/bin/sh表示用/bin/sh解释脚本并执行。再比如python也是解释性编程语言,可以作为脚本编程语言,格式如下:
#!/usr/bin/python2.7
print("Hello World!")
常见的shell解释器有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
- …
linux默认一般都是/bin/bash,这也是我们看到大部分shell脚本其第一行都是#!/bin/bash的原因。
2、shell脚本并非所有#都表示注释
#!/bin/bash 是唯一#开头但是不表示注释。