淺析Linux上的Shebang符號(#!)教程

來源:互聯網
上載者:User

使用Linux或者unix系統的同學可能都對#!這個符號並不陌生,但是你真的瞭解它嗎?本文了將給你簡單介紹一下Shebang(”#!”)這個符號。

首先,這個符號(#!)的名稱,英譯過來叫做”Shebang”或者”Sha-bang”(還有其他一些名稱,不過我一般就用這兩個)。

詞源與曆史:

Shebang的名字來自於SHArp和bang,或haSH bang的縮寫,指代Shebang中#!兩個符號的典型Unix名稱。 Unix術語中,井號通常稱為sharp,hash或mesh;而歎號則常常稱為bang。也有看法認為,shebang名字中的sh來自於預設shell Bourne shell的名稱,sh,因為常常使用shebang調用之。

在2010年版的Advanced bash scripting guide(revision 6.2)中,shebang被稱為"sha-bang",同時提到"也寫作she-bang或sh-bang",但該檔案中沒有提到"shebang"這一形式。

丹尼斯·裡奇在被問及他會如何稱呼這一特性時,他答道:

    發信人:"Ritchie, Dennis M (Dennis)** CTR **"
    收信人:< [redacted]@talisman.org>
    日期:Thu, 19 Nov 2009 18:37:37 -0600
    主題:RE: What do -you- call your #! line?

    我不記得我們曾經給它取過一個適當的名字。匯入這一特性已經是相當晚了--我覺得我是從關於伯克利Unix的UCB會議上的某人那裡得到的這一靈感;我可能是首先實現它的人之一,但這個創意是來自於別人的。

    至於它的名字:可能是類似於"hash-bang"的英國風描述性文字,但我沒有在任何場合使用類似寵物的名字來描述它。

    此致,

    Dennis

用途:

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。

舉例說明:

以test.sh指令碼為例,其中的代碼如下

#!/bin/bash
echo "hello, world."
echo "hello, ${1}."

給指令碼賦予執行許可權:
chmod a+x test.sh

可直接使用以下方式執行指令碼,運行之時,其實是 /bin/bash ./test.sh Jay
./test.sh Jay

返回結果為:
hello, world.
hello, Jay.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.