Sha -Bang 是什麼

Q. #!的名字爲何叫Sha-Bang?

A. Sha-Bang是Sharp和Bang的組合詞。Sharp for #, Bang for ! 相似的狀況是,C#一般被稱爲C Sharp

Q. Sha-Bang(#!)是否是註釋?

A. 不是註釋。Sha-Bang(#!)所在行的做用是告知該腳本使用的是哪一種命令解釋器,並非無關緊要的。雖然不少狀況下省略了Sha-Bang(#!)仍然可以運行腳本,這是因爲系統在這種狀況下是默認使用了當前命令行解釋器的

Q. Sha-Bang(#!)的編寫有什麼規範?

A. Sha-Bang(#!)應該位於腳本的第一行,而且頂格填寫,不然都是錯的,即便Sha-Bang以前的內容都是註釋,這種錯誤是常見的,並且不易發現的,由於此時Sha-Bang(#!)所在行其實是不起效的,系統使用了默認的命令行解釋器

Q. Sha-Bang(#!)在同一個腳本中能夠出現幾回?

A. 只有第一行的Sha-Bang(#!)會生效,其他的會視爲註釋

Q. 爲何推薦這種寫法:#!/bin/env perl?

A. 由於這是有利於移植腳本到其它平臺的寫法,解釋器的默認安裝路徑在各個操做系統是不太同樣的,有的是/bin/,有的是/usr/bin/,甚至有多是用戶自定義的路徑,使用env就基本上可以通用了。雖然env也有可能在/bin/或者/usr/bin/中,但一般的狀況是在這兩個路徑下都有env,或者其中一個是另外一個的符號連接

最後提醒一下,有時候設定的cronjob異常,可是命令行可以執行成功,請先檢查一下Sha-Bang(#!)是否合法,而後檢查是否缺乏了必須的環境變量,命令行可以執行成功多是利用了默認的命令行解釋器和環境變量。操作系統

相關文章
相關標籤/搜索