如果我的主腳本(其中包含shebang)包含配置文件(變量在shell腳本中定義)或庫文件(具有常用函數定義),那麼是否還需要該配置shell腳本的shebang?配置或庫shell腳本需要shebang嗎?
編輯: 我正在使用配置文件。或來源 主文件包含#!/ bin/sh shebang。
如果我的主腳本(其中包含shebang)包含配置文件(變量在shell腳本中定義)或庫文件(具有常用函數定義),那麼是否還需要該配置shell腳本的shebang?配置或庫shell腳本需要shebang嗎?
編輯: 我正在使用配置文件。或來源 主文件包含#!/ bin/sh shebang。
取決於你如何調用它。使用source
或.
命令然後no,如果僅使用腳本名稱將它們作爲子進程調用,那麼是的。
從您的描述,然後你「採購」的文件,所以不,#!
只是一個評論。從這些文件中移除執行訪問也是謹慎的,這樣它們不會被無意地稱爲子進程。
以下@triplee評論(如果它們不「來源」,則定義將只發生在子進程將是無用的)
編輯:
它們可以援引作爲一個子進程使用(例如)sh filename
,bash filename
,或者甚至(不寒而慄)csh filename
。所有這些shell都有不同之處,因此#!
行的一個優點是作爲註釋,指示代碼寫入的shell類型。儘管如此,我不會使用它,因爲這也意味着它可以作爲一個孩子運行。我相信你已經充分評論你的代碼,但是可能值得添加註釋來表示shell。
#!帶翻譯,不要使用:
source
或.
代替)的家當使得解釋執行其包含的家當本身(的引導機制)的腳本,這個執行過程中,與shebang的界限只被視爲評論。
由於在這種情況下產生了一個新的shell(child),舊的環境會被遺忘,而未導出的變量將被遺忘到新的shell中。
你如何從主腳本調用conf腳本? – heemayl
@heemayl檢查編輯 – Patrick