安卓系统

巴什·谢邦

点点今天事 | 中国既收不回藏南、拉达克,也帮不了巴基斯坦,因为...(何频:20190811)

点点今天事 | 中国既收不回藏南、拉达克,也帮不了巴基斯坦,因为...(何频:20190811)

目录:

Anonim

此字符序列( #! )称为shebang ,用于告诉操作系统使用哪个解释器来解析文件的其余部分。

社bang翻译员指令

Shebang解释器指令采用以下形式:

#!interpreter

  • 该指令必须在脚本的第一行。该指令必须以shebang #! 开头 #! shebang字符后的空白是可选的。解释器是二进制文件的完整路径(例如: /bin/sh /bin/bash )。解释器参数是可选的。

例子:

  • #!/bin/bash 使用 bash 解析文件。 #!/usr/bin/env perl 使用 env 命令查找 perl 可执行文件的路径。 #!/usr/bin/python 使用 python 二进制文件执行文件。

在Bash脚本中使用Shebang

如果未指定shebang并且运行Bash脚本的用户正在使用另一个Shell,则该Shell将使用该默认解释器进行任何解析。 例如, bash 的默认解释器是 bash zsh 的默认解释器是 sh 。 为了确保您的脚本将始终被Bash解释,您需要使用shebang指定可执行路径。

有两种使用Shebang指令和设置解释器的方法。

  1. 使用bash二进制文件的绝对路径:

    #!/bin/bash

    使用 env 实用程序:

    #!/usr/bin/env bash

使用第二种方法的优点是它将在用户的 $PATH 环境变量中搜索 bash 可执行文件。 如果 bash 有多个路径,则脚本将使用第一个路径。

当使用第一个选项向Bash shell提供的选项中添加选项时,将其传递给解释器。 例如,要以调试模式运行脚本,可以使用 #!/bin/bash -x 。 如果使用 env 方法,则需要使用 set 来声明该选项。 要启用调试模式,您可以在shebang行之后添加 set -x

示例脚本

让我们使用shebang创建一个简单的脚本,该脚本将打印“ Hello,World”。 打开您的文本编辑器并粘贴以下行:

nano hello_world 你好,世界

#!/bin/bash echo "Hello, World"

为了能够运行脚本而无需从命令行指定解释器,您需要使文件可执行:

chmod +x hello_world

现在,如果您可以通过键入 ./ 后跟脚本名称来运行脚本:

./hello_world

Hello, World

压制Shebang

如果由于某种原因您要覆盖Shebang行中的解释器集,则需要通过显式指定所需的shell来运行脚本。

例如,使用 bash shell运行在Shebang行中指定了 #!/bin/sh 的脚本,您可以输入:

bash hello_world

请注意,覆盖shell解释器不是一个好主意,因为它可能导致脚本的意外行为。

结论

到目前为止,您应该对Shebang是什么以及如何在Bash脚本中使用它有了很好的了解。

bash终端