bashshell是什么,为什么它对linux如此重要?

Bash shell已经有30多年的历史了,而且仍然很坚固。它是做什么的,从哪里来的,为什么它仍然是Linux系统中最常见的shell?...

Bash shell已经有30多年的历史了,而且仍然很坚固。它是做什么的,从哪里来的,为什么它仍然是Linux系统中最常见的shell?

什么是贝壳(a shell)?

当你打开一个终端窗口并输入命令时,有些东西必须接收你输入的内容,找出你想要的内容,然后运行你要求的任务。实现这一点的软件是shell。shell是命令解释器。它扫描您键入的内容,并挑选出命令、目录名、文件名和程序名,这样它就可以找出您要实现的目标。

What is a TTY on Linux? (and How to Use the tty Command)

RELATEDWhat is a TTY on Linux? (and How to Use the tty Command)

People often use the phrases “terminal windows,” “command line,” and “shell” interchangeably, but they’re three distinct things. A terminal window is a software representation of a physical teletype terminal. It gives you a connection to the computer. In order to do anything useful, you must be able to type instructi*** at a command line. The command line is provided by the shell, and the terminal window lets you access the shell.

shell还允许您将命令集合打包到称为脚本的文本文件中。每次运行脚本时,脚本中的所有命令都会为您执行。脚本提供了效率、可重复性和方便性。

第一个Unix shell是Thompson shell,称为sh。它是由Ken Thompson编写的,他可能是Bell实验室最初Unix创始人中最关键的成员。在Unix版本6之前(包括Unix版本6),Thompson shell被用作默认的Unix shell。在Unix版本7中,它在1979年被Bourne shell所取代。

相关:什么是Unix,为什么它很重要?

伯恩贝壳

斯蒂芬伯恩写的伯恩壳牌是汤普森壳牌的升级换代。它甚至开始使用与thomps***hell相同的命令sh来保持与现有脚本的向后兼容性。向后兼容性很重要,但是包含了一些新特性,这些特性提供了许多我们今天仍在使用的功能。

Advertisement

bourneshell是一种交互式shell和脚本语言。它支持前台和后台任务的执行和基本的作业控制。添加了管道和重定向,以及处理循环的改进。

shell现在包含了一些内置命令,这意味着它不需要将所有内容传递给外部实用程序,从而提高了效率。bourneshell甚至支持“heredocuments”,这是一种将数据自动发送到命令的优雅方式。

伯恩壳牌提高了标准,成为新的标准。

相关:如何在Linux上的Bash中使用“Here Documents”

bash的诞生

1984年,当GNU项目宣布打算从头开始编写一个免费的Unix克隆,并通过一个新的、允许的许可证,团队需要一个shell。当一个一直在为GNU项目开发shell的志愿者一再未能交付任何东西时,BrianFox被任务写下BourneShell的克隆。

它又被称为伯恩壳,或Bash。这一部分是为了向斯蒂芬伯恩致敬,另一部分是为了玩文字游戏。在1989年发布之后,Chet Ramey为Bash提供了一些bug修复。他最终成为bashshell的共同维护者。如今,他仍然是Bash项目的维护者。

Linux内核的创建者linustorvalds说,他1991年在新内核上运行的前两个程序是Bash和gcc,GNU的编译器。GNU实用程序与Linux内核的配对是互利的。GNU操作系统需要一个内核,Linux内核需要构成Unix克隆的所有其他东西。

Advertisement

因为Bash是标准的gnushell,所以它成为了所有GNU/Linux发行版上的标准shell。Linux蓬勃发展到现在,它支撑着现代世界惊人的数量。BashShell也在成功的浪潮中冲浪。

Bash合并并改进了bourneshell的特性集,但它也从其他shell中获得了灵感,比如C shell(csh)和KornShell(ksh)。例如,tilde“~”到$HOME环境变量中的值的扩展来自C shell,而对命令历史中的命令调用默认编辑器的fc命令来自KornShell。

Bash引入了配置文件,如“.bashrc”和“.Bash\u profile”文件。Bash上的命令行编辑功能远远超过了以前shell的功能。对命令历史中先前执行的命令的操作是C shell“bang history”特性的改进版本。Brace扩展是Bourne shell中缺少的一个特性,它在Bash中实现为C shell中的功能的超集。阵列通过消除其大小限制而得到改进。命令提示符中的参数扩展允许用户自定义Bash提示符。

Bash shell旨在符合POSIX P1003.2/iso9945.2 shell和实用程序标准。

相关报道:Linux杀死了商业Unix吗?

为什么bash仍然很重要

如果Bash不能胜任这项工作,它作为默认的Linux shell不可能持续这么长时间。由于Bash的使用寿命长,用户基数大,所以它非常成熟和稳定。有许多可供选择的shell,从C shell和KornShell这样的老手到Z shell(zsh)和友好交互shell(fish)这样的较新shell。Z shell和Fish shell都有一些Bash没有的特性,以及可以说是实现Bash所做的一些相同事情的更好方法。那么为什么Bash仍然是主要的shell呢?

在所有我被要求管理的Linux机器中,我不记得有一台没有Bash作为shell。Unix机器,是的,但是Linux机器,不是的,每次都是Bash。这种熟悉可以让你快速地开始工作,并且立刻变得高效。你已经知道Bash了,所以没有学习曲线。你不会因为语法上的细微差异而束手无策,因为这些差异会让你绕圈子,试图找出为什么有些东西不起作用。花在弄清楚这个shell上的咒语应该是什么上的时间是死时间,因此使用一个众所周知的和广泛使用的shell符合客户业务的利益。

Advertisement

使用一个shell,它是或正在努力地实现POSIX兼容对于许多Linux发行版来说都很重要,但更重要的是与以前的版本兼容。做出可能破坏现有脚本的更改显然是不吸引人的。不管你是否迷人,有时候,你只需要咬紧牙关。1967年9月3日,瑞典从左驾转向右转驾驶。凌晨4点50分,所有的交通都不得不停下来,慢慢地走到路的另一边,再停一次。凌晨5点,交通可以继续,现在大家都在右转。

bash会被取代吗?

现在看似不可思议的事情,以后也会发生。除非我们坚持认为在世界末日之前我们都会使用Bash,否则事实很可能是有一天,Bash将被替换为默认的Linux shell,不管它是否仍然是GNU标准shell。或者它可能是Bash,但是它的增强远远超出了我们今天使用的shell。但是,无论今天的Bash被什么所取代,要么是完全(或者几乎)向后兼容,要么是值得剧变的,不管它有什么好处。

这并非没有先例。自从macOS 10.15版本以来,苹果就放弃了Bash,采用了Z shell作为默认shell。苹果公司对GNU通用公共许可证(GPL)v.3存在问题。不幸的是,这是Bash使用的许可证。在gplv.2下发布的Bash的最后一个版本是2007年的3.2版。当前版本是5.1。苹果落后了将近15年。苹果在不升级到gplv.3的情况下加入最新shell的唯一方法就是完全升级到另一个shell。对苹果来说,这是值得的剧变(不过,如果您喜欢,仍然可以切换回macOS上的Bash!)

超级用户的工作站和必须通过SSH连接远程管理的业务线Linux服务器之间有着天壤之别。在大约150万个amazonec2托管服务器中,超过93%的服务器运行Linux。几乎75%的web服务器运行Linux。像Red Hat、Amazon和Google这样的组织在内部使用Linux。

很难想象一个新的壳牌公司能提供什么样的好处来证明这种全球动荡的合理性。这就是为什么Bash是固定的。

甚至微软现在也提供了一种方法,在Windows10上运行基于Linux的Bash shell!

  • 发表于 2021-07-14 16:06
  • 阅读 ( 104 )
  • 分类:互联网

你可能感兴趣的文章

为什么使用哪种linux操作系统无关紧要

... 您使用哪些Linux操作系统?为什么? ...

  • 发布于 2021-03-15 05:08
  • 阅读 ( 163 )

如何在windows10上获得linux bash shell

... 两者都将显示为“Run命令”,可以选择该命令立即打开bashshell。使用这两种方法的区别在于,它们在/mnt/c/Windows/System32目录中打开。这意味着您可以在Windows10中浏览System32子目录。 ...

  • 发布于 2021-03-21 11:48
  • 阅读 ( 293 )

哪个linux shell最好?比较了5种常见的贝壳

在Linux中使用bashshell愉快吗?或者你更愿意尝试另一种选择?有tsch、fish、KornShell和Z Shell可供选择。但是这些流行的Linux shell中哪一个是最好的呢? ...

  • 发布于 2021-03-30 18:45
  • 阅读 ( 377 )

如何使用shopt定制bashshell

如果您使用shopt微调bashshell的行为,您可以控制超过50个设置。我们将向您展示如何按照您喜欢的方式定制您的Linux系统。 shopt内置 shopt内置是bashshell所有版本的一部分,因此不需要安装任何东西。多年来,shopt提供的选项数量...

  • 发布于 2021-04-01 12:30
  • 阅读 ( 179 )

新的windows终端已经准备好了,这就是为什么它如此惊人

微软新的Windows终端终于稳定了。Windows终于有了一个更现代的终端环境,包括选项卡、拆分窗格、多种会话类型等功能,以及允许您配置从键盘快捷键到动画GIF背景等所有内容的设置。 最后,一个更现代化的windows终端 在2020年5...

  • 发布于 2021-04-02 04:44
  • 阅读 ( 218 )

如何使用chsh在linux上更改默认shell

...使用chsh命令将其设置为默认shell。我们会教你怎么做。 为什么贝壳很重要 shell位于您和操作系统之间。它在终端窗口内提供环境,允许您键入命令和运行程序。shell检查您的输入并找出您想要的内容。如果它能执行你的出价本...

  • 发布于 2021-04-02 06:04
  • 阅读 ( 341 )

如何在linux上运行和控制后台进程

...的组件,如GNOME或KDE,以及启动时启动的系统守护进程。 为什么几乎所有的东西都在运行?嗯,Bash内置的cd、pwd和alias在运行时不需要启动(或“派生”)进程。Bash在终端窗口中运行的bashshell实例中执行这些命令。这些命令之所...

  • 发布于 2021-04-03 03:30
  • 阅读 ( 234 )

如何在linux的bashshell中复制和粘贴文本

...制和粘贴。您必须使用鼠标高亮显示要复制的文本,所以为什么不使用它来执行复制和粘贴操作呢? 突出显示某些文本后,用鼠标右键单击并从上下文菜单中选择“复制”。 要粘贴复制的文本,请再次用鼠标右键单击并从关联...

  • 发布于 2021-04-03 03:36
  • 阅读 ( 248 )

如何在linux上创建别名和shell函数

使用别名和bashshell函数创建自己的Linux命令。驯服重复性的任务,截断冗长的进程,并用您经常使用且难以记住的选项配置标准命令。 别名和shell脚本是Linux和类Unix操作系统中的强大技术,允许您将命令行体验磨练为您想要的。...

  • 发布于 2021-04-03 03:45
  • 阅读 ( 213 )

bash需要知道的15个特殊字符

如果您想在Linux、macOS或其他类似UNIX的系统上掌握bashshell,那么特殊字符(如~、*、|和>)是至关重要的。我们将帮助您解开这些神秘的Linux命令序列,成为象形文字的英雄。 什么是特殊字符(special characters)? bashshell以两...

  • 发布于 2021-04-03 03:58
  • 阅读 ( 223 )
l68898168
l68898168

0 篇文章

相关推荐