標準的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 是唯一#開頭但是不表示註釋。