Linux中Shebang的作用是什麼?

#! 字符形成一個幻數。 我們將這些幻數嵌入到 UNIX/Linux 操作系統下的任何腳本中,以告訴內核要執行什麼解釋器,以讀取我們的腳本。 像 Linux shell、Python、Perl 和 R 解釋器。 您可能已經註意到所有 Linux shell 和 Perl/python 腳本都以以下行開頭:

#!/bin/bash

或者

#!/usr/bin/env python

或者

#!/usr/bin/env perl

或者

#!/usr/bin/env Rscript

現在我們將編寫一個 Python 語言的程序文件。 我們可以通過直接調用解釋器來執行該程序,而無需添加如下所示的 shebang 行。

蟒蛇腳本

import sys

def greeting(name):
sys.stdout.write("Hello" + name + "n")

name = "Omar"
greeting(name)

為了執行代碼,我們會提到 python 在文件名之前。

python python_script.py

Output
Hello Omar

我們還將為 R 語言編寫一個程序文件。 我們可以通過直接調用解釋器來執行該程序,而無需添加如下所示的 shebang 行。

r_script

print("hello world")

為了執行代碼,我們會提到 Rscript 在文件名之前。

Rscript r_script.R

Output
"hello world"

如何製作可執行文件

要製作可執行文件,我們應該添加 shebang 行 #!/usr/bin/python 到腳本的頂部並將文件的模式更改為可執行。

蟒蛇腳本

#!/usr/bin/python
import sys

def greeting(name):
sys.stdout.write("Hello" + name + "n")

name = "Omar"
greeting(name)

要使文件可執行,請鍵入以下命令。

chmod +x python_script.py

現在我們可以運行這個文件,它會被 python 解釋。

./python_script.py

Output
Hello Omar

大型計算機集群

路徑 /usr/bin/python 可能適用於大多數默認系統,但可能不適用於大型計算機集群等。 所以我們將使用該程序 env 找到合適的中介。

#!/usr/bin/env python
import sys

def greeting(name):
sys.stdout.write("Hello" + name + "n")

name = "Omar"
greeting(name)

我們也可以對任何像 Rscript 這樣的程序做同樣的事情。

#!/usr/bin/env Rscript
print("hello world")

另請閱讀:

  • 70 個 Shell 腳本面試問題和答案