在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")