Shell技術門類長篇分享

向你的命令行腳本添加 Shebang 行

#!/bin/sh

上面這行代碼,常常出現在 shell 腳本中,是一個 shell 腳本的標準起始行,也被稱作 Shebang 行。

Shebang 即 SHArp(#) 和 bang(!) 的組合,是一個由井號和嘆號構成的字元序列 #!,用於在Unix 系統中指定運行該文件解釋器。

在文本文件中加上 Shebang 行,就能像執行系統命令一樣調用一些腳本或文件,而不用另外加上解釋器。

例如,在一個名為 script.py 的 Python 腳本中使用 Shebang 行,原本你需要使用以下命令執行該腳本:

$ python script.py

現在你只需要輸入:

$ script.py

就可以直接運行你的腳本。

甚至,你可以刪掉 .py 的後綴,或者,指定一個特定 Python 解釋器的版本。

用法

在文本文件的第一行輸入 Shebang 行:

#![任意個空白字元][解釋器的絕對路徑][一些調用參數]

命令行輸入該文件作為命令:

$ [文件名] [一些調用參數]

相當於執行了以下命令:

$ [指定的解釋器] [解釋器調用參數] [文件名] [文件調用參數]

具體地,假設 /usr/local/bin/foo 中有一以下行開頭的 Bourne shell 腳本 #!/bin/sh -x 而它被如此調用("$"是命令提示符) $ foo bar 該命令的輸出等同於 $ /bin/sh -x /usr/local/bin/foo bar,除了 argv[0] 被設定為腳本的文件名而非解釋器的文件名外。

示例

  • #!/bin/sh:使用sh,即 Bourne shell 或其它兼容shell執行腳本
  • #!/bin/csh:使用csh,即 C shell 執行
  • #!/usr/bin/perl -w:使用帶警告的 Perl 執行
  • #!/usr/bin/python -O:使用具有代碼優化的 Python 執行
  • #!/usr/bin/php:使用 PHP命令行解釋器執行

最佳實踐

使用 env 命令來利用環境變數中的程序解析腳本,可以提高腳本的可移植性。env 會利用 PATH 環境變數來進行定位。

例如,使用了 env 的 Shebang 看上去是這樣的:

#!/usr/bin/env python

參考文章:https://zh.wikipedia.org/wiki/Shebang

本文鏈接:https://www.linuxstory.org/add-shebang-line-to-your-cli-script/

轉載請註明出處,否則必究相關責任。

對這篇文章感覺如何?

太棒了
3
不錯
0
愛死了
0
不太好
0
感覺很糟
0

You may also like

Leave a reply

您的電子郵箱地址不會被公開。 必填項已用*標註

此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

More in:Shell

Shell

在Powershell中使用開源命令

在Windows上設置路徑,以便可以使用開源命令 當您在操作系統上啟動應用程序時,您的操作系統需要使用某些代碼庫和實用程序才能運行該應用程序。你的操作系統知道如何找到這些庫和實用程序,因為它有一個系統 […]
Shell

brew 4.0.0發布

brew 用於 macOS(如果你需要的話,也包括 Linux)的附加軟體包管理器。 如果你在 Mac 上的終端窗口工作,Homebrew 是一個方便的工具,它可以讓你快速、輕鬆地安裝廣泛的 FOSS […]
Shell

sudo 深入學習

sudo 作為一款許可權管理工具,平常在各個平台使用。但是真正算的上正確使用的又寥寥無幾。這篇文章,便是詳細介紹一下這個命令的正確使用方式。