介绍:
每个 bash 脚本通常都以 shebang 开头!Shebang(sha–bang)在指定用于运行文件中代码的解释器时很有用。这篇文章是关于了解 bash 和 shell 之间的区别,以及驾驭shebang 的能力!
什么是shell?
shell,通常称为命令提示符,是每个 Linux 发行版不可或缺的一部分。它是用户可以通过它与操作系统交互的最关键媒体之一。
Shell 既是一种命令行界面,也是一种脚本语言,基于 Linux 的操作系统使用它来控制和修改 shell 脚本形式的系统执行。
/bin/sh:
sh(shell命令语言)是由POSIX(可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ))标准描述的编程语言。sh有多种实现,如Bourne shell(sh),dash,Korn Shell(K shell),Z shell,ash等。
shell 是一个规范,它不是一个“实现”。规范是对语言语法和语义的详细描述,而“实现“是带有解释器的实际语言。在许多系统上,/bin/sh 链接到特定于系统上 Linux 发行版的实现。
# Running on an OpenWRT System
/bin/bash:
Bash,Bourne Again Shell的缩写,是为GNU项目编写的sh兼容实现,作为Bourne Shell的替代品。它可以被视为bourne Shell的超集。Bash包括从Korn Shell和C Shell中汲取的想法。
bash既可用于脚本编写,也可用于交互式终端或解释器。你可以与此类似 python3 是一种脚本语言以及它如何成为解释器(当你在终端中输入 python3 时,可以看到一个交互式解释器。交互模式下的 Bash 是终端或命令提示符。在 Ubuntu 中,默认脚本 shell 是 dash,交互式终端/shell 的默认脚本是 bash。
注意,其他类型的 shell 并非支持所有功能。Bash 可以执行大量的 Bourne shell 脚本,但除了少数例外,但并非所有 bash 脚本都可以使用 Bourne shell 执行。bash
bash vs shell:
Shell 脚本是指任何 sh 实现中的脚本,如 K shell、Z shell、bash 等。由于 bash 是 shell 最常见的实现,因此可以互换使用。牢记上述所有差异,需要注意的是,bash 和 shell 是不一样的。在某些情况下,一个可能优于另一个。下面的列表包括使用一个解释器相对于其他解释器的优势。
- Bash具有比传统Bourne Shell更先进的功能
- 易于调试,bash还支持信号处理
bash
支持交换机,使其更符合 POSIX 标准。--posix
- 如果确定运行脚本的所有系统都支持 bash,那么在你的 shebang 中考虑 /bin/bash 值得一试。
Bash和bourne shell之间的更多区别可以在GNU文档中找到。
- 便携性很关键。带有 shebang /bin/sh 的脚本几乎可以在任何 Linux 系统中执行,而使用 /bin/bash 解释的脚本可能不会,因为所有 Linux 发行版都不包含 bash
- 它是标准化的
关于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是大多数脚本语言中的注释标记。
非常感谢你抽出宝贵的时间来阅读我的文章,我真诚地感谢你对我的支持和鼓励。如果你有任何问题或想法,请在下面留言,我会很高兴和你交流和讨论。希望对你有所帮助。再次感谢你,祝你生活愉快!
原文地址:https://blog.csdn.net/qq_61813593/article/details/130492989
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_45564.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!