介绍

每个 bash 脚本通常都以 shebang 开头Shebangshabang)在指定用于运行文件代码解释器时很有用。这篇文章关于了解 bash shell 之间区别,以及驾驭shebang 能力

什么shell

shell,通常称为命令提示符,是每个 Linux 发行版不可或缺的一部分。它是用户可以通过它与操作系统交互的最关键媒体之一。

Shell 既是一种命令行界面,也是一种脚本语言基于 Linux 操作系统使用它来控制和修改 shell 脚本形式的系统执行

/bin/sh

shshell命令语言)是由POSIX可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )标准描述编程语言sh有多种实现,如Bourne shellsh),dashKorn ShellK shell),Z shellash等。

shell 一个规范,它不是一个实现”。规范是对语言语法语义详细描述,而“实现“是带有解释器的实际语言。在许多系统上,/bin/sh 链接到特定于系统 Linux 发行版实现

下面的列表包括一些特定于 Linux 发行版默认实现示例

# Running on an OpenWRT System

$ file -h /bin/sh

/bin/sh: symbolic link to ash

/bin/bash

 

注意,其他类型的 shell 并非支持所有功能。Bash 可以执行大量的 Bourne shell 脚本,但除了少数例外,但并非所有 bash 脚本都可以使用 Bourne shell 执行bash

POSIX中找不到的一些bash功能如下

bash vs shell:

Shell 脚本是指任何 sh 实现中的脚本,如 K shell、Z shell、bash 等。由于 bash 是 shell 最常见的实现,因此可以互换使用。牢记上述所有差异,需要注意的是,bash 和 shell 是不一样的。在某些情况下,一个可能优于另一个。下面的列表包括使用一个解释器相对于其他解释器的优势。

使用 /bin/bash 的优点

Bash和bourne shell之间的更多区别可以在GNU文档找到

使用 /bin/sh 的优点

关于Shebang!

Shebang 是大多数 shell 脚本的开头。它可以理解为告诉程序加载机制将正在执行当前文件路径(/path/to/file传递第一行shebang)中指定的解释器的路径的行。

例如,如果脚本的第一行位于 /home/test_user/test.sh 包含,则程序加载执行以下内容

#!/bin/bash

/bin/bash /home/test_user/test.sh

解释器 /bin/bash 忽略 test.sh 脚本中的 shebang,因为 hash是大多数脚本语言中的注释标记

 非常感谢你抽出宝贵的时间阅读我的文章,我真诚地感谢你对我的支持和鼓励。如果你有任何问题或想法,请在下面留言,我会很高兴和你交流讨论。希望对你有所帮助。再次感谢你,祝你生活愉快!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注