相信有接觸過shell腳本的同學們都應該知道,shell腳本的第一行一般會寫有以下字樣:
#!/bin/bash
或者
#!/bin/sh
或者
#!/bin/awk
但我們也知道,在shell腳本里符號#是作爲註釋符出現的,在其之後的同一行內容會被視爲註釋進而不執行
那麼第一行所謂的指定路徑的語句真的會生效嗎?或者換個說法,存不存在只是行業規範爲了提高代碼可讀性所做的註釋的可能性呢?
我嘗試在網上搜索,除了認同第一行作用的說法以外,也確實有人質疑第一行只是普通註釋:http://blog.csdn.net/u011175448/article/details/11269949
因爲在寫腳本的時候也會有不寫所謂第一行也能執行的情況
作出這樣的揣測也不是毫無道理,畢竟親測在ubuntu的gedit編輯器支持高亮的情況下,我們看到的代碼是這樣的,第一行跟註釋行顏色是一樣的:
????等等!!!!
你再看仔細一點?!第一行跟第二行真的是一樣的嗎??
沒錯,我們可以看到第一行的字體被加粗了
是因爲我第一行寫了路徑所以加粗了?再接着看:
不管寫什麼,第一行的#!內容都會加粗。那麼接着去除#後面的!:
將第一行的#!改爲#後變爲了正常的註釋,而且重點是第二行的#!部分從字體上看也成了註釋,沒有指定路徑的功能了
gedit居然幫我們解釋了一切
當然如果你還是不放心,可以試着執行一下(當然記得執行前先用chmod給文件加上執行權限):
亂寫第一行的結果就是得到一個完美的報錯。
至於爲什麼不寫第一行也能執行,上面這個報錯開頭也已經給了我們答案:第一行寫錯或者不寫時,系統會有一個默認的解釋器進行解釋,此處爲bash。
結論:第一行的內容指定了shell腳本解釋器的路徑,而且這個指定路徑只能放在文件的第一行。第一行寫錯或者不寫時,系統會有一個默認的解釋器進行解釋。
以上。