当前位置: 首页>>技术教程>>正文


bash脚本与shell脚本相同吗?

,

问题描述

我对Ubuntu非常陌生。我听到有人说”shell scripting”,”bash scripting”。

我不知道他们是不是一样?还是他们不同?

最佳回答

Bash(bash)是许多可用的(至今仍是最常用的)Unix shell之一。 Bash代表“ Bourne Again SHell”,并且是原始Bourne shell (sh)的替代/改进。

Shell脚本是在任何Shell中编写脚本,而Bash脚本是专门为Bash编写脚本。但是,实际上,除非有问题的 shell 不是Bash,否则”shell script”和”bash script”通常可以互换使用。

编辑:实际上,Ubuntu中的默认脚本 shell 是破折号,而默认的交互式 shell (如果拉起终端会得到什么)是Bash。尽管如此,这两个术语仍然大部分可以互换。

次佳回答

介绍

Shell脚本和Bash脚本不是一回事,因为存在其他可用于执行脚本的 shell ,例如sh。打算由Bash执行的脚本应标记为Bash脚本。由于Bashsh相比具有扩展功能,是在许多发行版中最常用于执行用户脚本的术语,因此这些术语可以互换使用。但是,还有其他 shell 程序,例如Korn (ksh)C shell (csh)Z shell (zsh),但我们这里不再赘述,因为shbash与Ubuntu最相关。 IBM的一篇很棒的文章here进一步详细介绍了Linux中shell的发展,并很好地描述了shell架构以及shell的不同之处。

Shell脚本

Sh是Stephen Bourne开发的原始Unix shell。但是,基于Debian的系统和Ubuntu将dash视为其sh shell 程序(sh实际上是与dash链接的)。在Debian和Ubuntu中,由于sh的速度,它更经常用于关键的系统过程以及启动时执行关键脚本。有关更多详细信息,请参见the Ubuntu wikiBash代表Bourne Again SHell,后来由Brian Fox开发,并大大扩展了原始的sh。 Fox和其他人对Bash的开发是GNU项目的重要组成部分。有关更多信息,请参阅this关于Bash历史的精彩讨论。

重要的是要注意,在Ubuntu和其他发行版中使用的shBash都符合POSIX的要求,这意味着它们遵守有关Shell中命令执行方式的许多标准。这是为了确保可以可靠地预测OS中使用的脚本的结果,并且可以将Shell的行为保留在这些POSIX参数内,因为这对于开发人员而言尤其重要。有关标准的更多信息,请参见the official documentation

尽管shell脚本旨在作为bash脚本执行,但通常它们的后缀为.sh,并且在脚本顶部具有#!/bin/bash。将该脚本称为script.sh还是my.script实际上并不重要,重要的是对解释器的调用是/bin/sh还是/bin/bash。也可以使用shbash在命令行上调用Shell脚本。

但是,需要注意的是,根据调用哪个解释器,结果可能有所不同,因为并非所有bash命令都可以在sh中使用,而大多数sh命令都可以在bash中使用。通常,大多数用户都希望将/bin/bash用于其脚本,以便他们可以利用扩展功能集。如果需要,可以使用/bin/sh执行系统脚本。

Bash Shell脚本编写资源

有时很难在网上找到遵循良好做法并提供建议的有用资源,以使您可以创建有用的脚本。在man bash之后,一些最重要的资源是Greg的wikiBash hackers和Steve Parker最近关于Shell脚本的书,该书主要关注Bash,由O’Reilly出版。 Bash beginner’s Guide也进行了很好的介绍。

第三种回答

Ubuntu有多个可用的Shell,例如bashzshkshtcshcsh

因此,只要有人说壳,他就在谈论其中之一。但是,这些 shell 彼此有点不同。因此,当有人谈论bash脚本时,他正在使用shell,但是当有人谈论shell脚本时,他本身并不是在使用bash。但是由于bash通常用于Ubuntu脚本中,所以通常是这样。而且,不同的 shell 在很多方面都是相同的,因此通常无关紧要。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8691.html,未经允许,请勿转载。