#!/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/
轉載請註明出處,否則必究相關責任。
對這篇文章感覺如何?
太棒了
4
不錯
0
愛死了
0
不太好
0
感覺很糟
0
More in:Shell
Linux Shell : 關於 Zsh Bash Fish
介紹著名Linux Shell - Bash、Zsh和Fish的一些注意事項和功能。 Linux之所以強大,是由於其多變的命令行界面,可與系統進行交互。在此過程中,shell擔任著用戶與Linux內核 […]
在Opensuse leap Linux上安裝Cherrytree的步驟
cherrytree是一款分層筆記應用程序,具有豐富的文本和語法高亮功能,數據存儲在單個 XML 或 SQLite 文件中。該項目的主頁是 giuspen.com/cherrytree。 Snaps […]
如何清除 PHP composer 的緩存或刪除其文件夾
在使用 PHP Composer 進行工作時,您是否遇到了緩慢的性能問題,為了提高其效率以及管理依賴關係,請嘗試清除您的項目的 Composer 緩存。 對於那些不熟悉的人,本文是關於 PHP 應用程 […]
如何更改x-www-browser的優先順序-更新備選方案
如果您的Linux系統上安裝了多個瀏覽器,如Ubuntu或Debian,那麼我們可以使用Updatealternates命令來更改它們的優先順序。 Update Alternatives是Linux上可 […]