在Linux中Shebang的功能是什么?

时间:2020-03-05 15:30:11  来源:igfitidea点击:

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行。

python_script

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行。

脚本

print("hello world")

为了执行代码,我们将在文件名之前提及“ Rscript”。

Rscript r_script.R
Output
    "hello world"

如何制作可执行文件

要制作可执行文件,我们应该在脚本顶部添加shebang行“#!/usr/bin/python”,并将文件模式更改为可执行文件。

python_script

#!/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")