在Linux脚本中使用Shebang #!

在Linux脚本中使用Shebang #!

简介

在Linux中,Shebang(#!)是脚本开始时的一个特殊行,它告诉操作系统在执行脚本时要使用哪个解释器。这一行也被称为 hashbang、shabang 或” sharp-exclamation “,是一个破折号的第一行,以” #! “开头,后面是解释器的路径。Shebang行很重要,因为它允许你在Linux系统上运行用任何语言编写的脚本,而不仅仅是shell脚本。

了解Shebang

什么是Shebang

Shebang “#! ” 这个符号表示在运行脚本时要使用哪一个解释器,或者哪一个解释器的版本。它也被称为 “sharp-exclamation”、”sha-bang”、”hash-bang “或 “pound-bang”。这个名字被认为是由 ” SHarp bang “或 ” haSH bang “的部分缩略词而来。

Shebang总是脚本的第一行。由于它以 “#”符号开始,包含Shebang的那一行不会被shell处理。当Linux系统执行一个文本文件时,它把Shebang当作一个shell指令。它找到正确的解释器并运行它,将文件名作为输入传给解释器。例如,运行一个名为 ” ~/scripts/shebang “的文件,该文件以Shebang ” #!/bin/sh “开头,在功能上等同于运行 ” /bin/sh” ~/scripts/shebang “命令。该文本文件必须是可执行的,才能进行正确的处理。

Shebang的重要性

Shebang 指令有以下优点

  • 允许用户将执行的脚本和文件视为命令。

  • 对用户隐藏了某些执行细节,例如 解释器 的名称

  • 不要求用户知道解释器的绝对路径或如何使用 env 命令。

  • 允许使用一个特定版本的解释器,例如 python2python3。

  • 允许在保持用户行为和命令不变的情况下改变解释器。

  • 可以自动将强制选项传递给解释器。

如果解释器的路径是硬编码的,就会出现一个潜在的缺点。如果解释器的位置改变了,Shebang指令也必须同时更新。否则脚本可能会停止工作。

在脚本中使用Shebang

Shebang的格式

Shebang 指令遵循这样的格式:

#!interpreter [options]

下面是一个Shebang指令的真实例子。这个Shebang要求使用Bourne sh shell来运行脚本。这个例子使用一个绝对路径来定义解释器。

#!/bin/sh

env工具可以帮助找到解释器的路径。在这个例子中, Shebang 告诉系统使用 ” /usr/bin/env “来找到通往 python2 解释器的路径。这种技术更加稳健,因为如果路径发生变化,它还能继续工作。

#!/usr/bin/env python2

使脚本可执行

在给你的脚本添加 shebang 行之后,你需要使脚本可执行。要做到这一点,你可以使用带有 “+x “选项的chmod命令。例如 –

$ chmod +x script.py

这个命令使 “script.py “文件可以执行。

运行脚本

在使脚本 可执行 之后,你可以通过在命令行中输入其名称并按回车键来运行它。比如说 –

$ ./script.py

该命令运行’script.py’文件。

Shebang的最佳实践

要遵循的规则

为了有效地实现Shebang,请牢记以下规则。

  • 指令必须总是以 “#!” 的组合字符开始

  • 为了使其正常工作, Shebang 必须出现在文件的第一行。如果在其他地方发现它,它将被视为一个注释。

  • 指定解释器的完整绝对路径或使用env查找正确的路径。在 解释器 名称后面插入解释器选项。编译器选项的实现细节在不同的系统中有所不同。然而,所有主要的操作系统都至少支持一个选项。

  • #! 字符组合和解释器名称之间允许有一个或多个空格,但不是必须的。例如,#!解释器和 #! 指令解释器是有效的,而且功能上是等同的。

  • Linux允许第二个脚本充当第一个脚本的解释器,但并不是所有的操作系统都是这样的。

Shebang特殊指令

” #!/bin/false ” 指令是一个特殊的Shebang指令。它立即退出并返回一个错误状态。防止某些系统文件在其适当的上下文之外运行。

总结

Shebang 行是一个重要的工具,它允许你在Linux系统中运行用任何语言编写的脚本。它告诉操作系统在运行脚本时要使用哪个 解释器 ,它是脚本的第一行。Shebang行有几个优点,比如允许用户把脚本和文件当作命令,隐藏执行细节,以及允许使用某个特定版本的解释器。一旦你把shebang行添加到你的脚本中并使其可执行,你就可以通过在命令行中简单地输入其名称来运行它。在Shebang行的帮助下,你可以在Linux系统上借助适当的解释器轻松地运行用任何语言编写的脚本。需要注意的是,如果shell路径是 硬编码的 ,如果shell位置发生变化, shebang 指令必须在shell中更新。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程