R1-003 Linux上的Shebang符號——#!

路途中的人2012發表於2017-03-02
Shebang這個符號通常在Unix系統的指令碼中第一行開頭中寫到,它指明瞭執行這個指令碼檔案的解釋程式。
1. 如果指令碼檔案中沒有#!這一行,那麼它執行時會預設用當前Shell去解釋這個指令碼(即:$SHELL環境變數)。
2. 如果#!之後的解釋程式是一個可執行檔案,那麼執行這個指令碼時,它就會把檔名及其引數一起作為引數傳給那個解釋程式去執行。
3. 如果#!指定的解釋程式沒有可執行許可權,則會報錯“bad interpreter: Permission denied”。如果#!指定的解釋程式不是一個可執行檔案,那麼指定的解釋程式會被忽略,轉而交給當前的SHELL去執行這個指令碼。
4. 如果#!指定的解釋程式不存在,那麼會報錯“bad interpreter: No such file or directory”。注意:#!之後的解釋程式,需要寫其絕對路徑(如:#!/bin/bash),它是不會自動到$PATH中尋找直譯器的。
5. 當然,如果你使用”bash test.sh”這樣的命令來執行指令碼,那麼#!這一行將會被忽略掉,直譯器當然是用命令列中顯式指定的bash。

原文連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2134581/,如需轉載,請註明出處,否則將追究法律責任。

相關文章