作为Linux爱好者,我们都会发现bash脚本是Linux系统的重要组成部分。然而,许多Linux用户不知道为什么bash脚本的第一行包含#!。所以#和的组合!被称为shebang或shebang。
尽管shebang看起来像bash脚本头,但它最初指示系统有关解释器来执行脚本。这个概念感觉有点复杂,但事实并非如此,因为本指南都是关于shebang:bash脚本头的。在这里,我们还将提供一些关于其配置的有趣见解。
什么是Shebang:Bash脚本头在第一行?
这个具有各种名称,如shebang、bang-line和hashbang,因此它是脚本解释器的绝对路径。这就是为什么它停留在第一行,或者系统无法执行脚本。
例如,如果要在bash解释器中运行脚本,则必须添加以下行作为头:
#!/垃圾桶/垃圾桶
在上面的代码中,/bin/bash显示了用于运行脚本的解释器的路径。
脚本中的解释器类型
让我们深入了解bash脚本,并了解您可以使用的各种类型的shell脚本解释器:
#!/usr/bin/env-bash使用PATH环境变量来定位bash可执行文件。它确保脚本应在路径可能不同的不同系统系统中工作。
#!/bin/sh用于在符合POSIX的shell中运行脚本,该shell有时会根据您的系统链接到bash或dash。
#!/bin/ksh用于在KornShell解释器中执行脚本。
#!//usr/bin/env-ksh使脚本可移植到/bin目录中ksh不可用的系统。
#!/bin/zsh在zsh中执行脚本,它具有比bash更高级的功能。
#!/usr/bin/env-zsh用于通过PATH环境变量定位zsh解释器。
#!/bin/csh或#/bin/tcsh用于为C shell(Csh)或tcsh(C shell的改进版本)编写的脚本。
如何提供可执行权限?
添加shebang不仅需要执行脚本,还需要为文件提供可执行权限。例如,必须运行带有x选项的chmod命令,才能为my_script.sh文件提供可执行权限:
chmod+x my_script.sh
脚本中的调试模式
如果你想知道你的脚本是如何执行的,你需要添加-x选项和shebang:
#!/bin/bash-x
此外,如果任何命令失败,您可以使用-e选项使脚本退出:
#!/bin/bash-e
脚本示例
让我们举一个简单的例子,使用/bin/bash-shebang在bash环境中执行脚本。例如,以下是脚本:
#!/垃圾桶/垃圾桶
echo“这是$(pwd)中可用的目录列表:”
ls-l
现在,通过执行以下命令运行脚本,它将列出系统中的所有目录:
./list.sh
包装
这一切都是关于shebang到底是什么,以及为什么必须将其添加到每个bash脚本中。这个显示了脚本解释器的绝对路径。本文介绍了可以在shell脚本中使用的各种shebang,以及Linux中可用的不同类型的shell。shebang也被称为hashbang和bang线,但其工作原理是相同的。