bash、zsh和其他linux shell之间有什么区别?

默认情况下,大多数Linux发行版都包含bashshell,但是您也可以切换到另一个shell环境。Zsh是一个特别流行的替代品,还有其他的贝壳,比如ash、dash、fish和tcsh。但有什么区别,为什么会有这么多?...

bash、zsh和其他linux shell之间有什么区别?

默认情况下,大多数Linux发行版都包含bashshell,但是您也可以切换到另一个shell环境。Zsh是一个特别流行的替代品,还有其他的贝壳,比如ash、dash、fish和tcsh。但有什么区别,为什么会有这么多?

贝壳做什么?

在Linux上,当您在命令行登录或启动终端窗口时,系统将启动shell程序。shell提供了扩展命令行环境的标准方法。如果愿意,可以将默认shell换成另一个shell。

第一个shell环境是由贝尔实验室开发并于1971年发布的汤普森shell。从那时起,Shell环境就一直在这个概念的基础上进行构建,添加了各种新特性、功能和速度改进。

例如,Bash提供了命令和文件名完成、高级脚本功能、命令历史记录、可配置的颜色、命令别名以及1971年第一个shell发布时不可用的各种其他功能。

shell也在后台由各种系统服务使用。Linux发行版包含许多作为shell脚本编写的函数。这些脚本是通过shell环境运行的命令和其他高级shell脚本函数。

炮弹指向bash:sh、csh、tsh和ksh

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

现代贝壳最杰出的鼻祖是伯恩贝壳,也被称为“sh”,它是以在美国电话电报公司贝尔实验室工作的斯蒂芬·伯恩的名字命名的。1979年发布,由于支持命令替换、管道、变量、条件测试和循环以及其他特性,它成为Unix中的默认命令解释器。它没有为用户提供太多的定制,也不支持别名、命令完成和shell函数等现代细节(尽管最后添加了这个)。

C shell,或称“csh”,是由加州大学伯克利分校的billjoy在20世纪70年代末开发的。它添加了许多交互元素,用户可以通过这些元素控制自己的系统,比如别名(长命令的快捷方式)、作业管理功能、命令历史等等。它是以C编程语言为模型的,Unix操作系统本身就是用C编程语言编写的。这也意味着BourneShell的用户必须学习C语言,以便在其中输入命令。此外,csh还有很多bug需要用户和创建者在很长一段时间内解决。人们最终使用bourneshell编写脚本,因为它能更好地处理非交互式命令,但仍坚持使用cshell进行正常使用。

bash、zsh和其他linux shell之间有什么区别?

随着时间的推移,很多人在C shell中修复了bug并添加了一些特性,最终得到了一个名为“tcsh”的csh改进版本。但是csh仍然是基于Unix的计算机的默认设置,并且添加了一些非标准特性。来自贝尔实验室的davidkorn致力于KornShell,或称为“ksh”,它试图通过向后兼容bourneshell的语言来改善这种情况,但添加了cshshell的许多特性。它于1983年发布,但拥有专有许可证。直到21世纪,它才成为自由软件,当时它是在各种开源许可下发布的。

bash的诞生

bash、zsh和其他linux shell之间有什么区别?

用于Unix的可移植操作系统接口(POSIX)是对繁忙的专有csh实现的另一种回应。它成功地创建了一个命令解释标准(除其他外),并最终反映了KornShell中的许多特性。与此同时,GNU项目正试图创建一个免费的、与Unix兼容的操作系统。GNU项目开发了一个自由软件shell作为其自由操作系统的一部分,并将其命名为“Bourne-ashell”或“bash”。

Bash自1989年第一次发布以来已经改进了几十年,但它仍然是目前大多数Linux发行版的默认shell。它也是苹果macOS上的默认shell,可以在微软windows10上安装。

较新的贝壳:灰,破折号,zsh和鱼

尽管Linux社区在此后的几年里已经开始使用Bash,但当Bash在28年前首次发布时,开发人员并没有停止创建新的shell。

肯尼思·阿尔姆奎斯特创造了一个伯恩贝壳的克隆体,被称为阿尔姆奎斯贝壳,一个贝壳,“灰烬”,有时只是“sh”。它也与POSIX兼容,成为了BSD(Unix的另一个分支)中的默认shell。ash shell比bash更轻量级,这使得它在嵌入式Linux系统中很流行。如果你有一个安装了BusyBox的Android**,或者任何其他带有BusyBox软件套件的设备,那么它使用的是ash的代码。

bash、zsh和其他linux shell之间有什么区别?

Debian开发了一个基于ash的shell环境,并称之为“dash”。它被设计成与POSIX兼容且轻量级的,因此它比Bash更快,但没有它的所有特性。Ubuntu使用dash shell作为非交互式任务的默认shell,加速shell脚本和其他后台运行的任务。Ubuntu仍然使用bash作为交互shell,因此用户仍然拥有全功能的交互环境。

bash、zsh和其他linux shell之间有什么区别?

最流行的新shell之一是zshell,或“zsh”。由paulfalstad于1990年创建的zsh是一个Bourne风格的shell,它包含了bash中的特性,甚至更多。例如,zsh具有拼写检查、监视登录/注销的功能、一些内置的编程特性(如字节码)、对语法中的科学表示法的支持、允许浮点运算等特性。

bash、zsh和其他linux shell之间有什么区别?

另一个较新的shell是2005年发布的友好交互式shell,或称“fish”。它有一个独特的命令行语法,设计得更容易学习,但不是从bourneshell或cshell派生的。这是一个有趣的想法,但是通过使用fish所学到的东西并不一定能帮助您使用bash和其他Bourne派生的shell。

你应该选哪一个?(以及zsh为什么受欢迎)

你不需要选择贝壳。您的操作系统为您选择默认的shell,而这个选择几乎总是bash。坐在Linux发行版甚至Mac面前,你几乎总是会有一个bashshell环境。Bash有很多高级特性,但是除非编写shell脚本,否则可能不会使用它们。

在嵌入式Linux系统或BSD系统上,您将得到ash shell。但是ash是一个基于Bourne的shell,并且基本上与bash兼容。尽管在这个轻量级shell中没有一些高级脚本功能,但是您从使用bash获得的任何知识都将转换为使用ash或dash shell。

几乎你会遇到的每一个shell都是基于Bourne的,包括zsh都是类似的。

这就是为什么zsh很受欢迎。这个较新的shell与bash兼容,但包含更多特性。zsh shell提供了内置的拼写更正、改进的命令行完成功能、充当shell插件的可加载模块、允许您在命令行(而不仅仅是命令)上别名文件名或其他任何内容的全局别名,以及更多主题化支持。它类似于bash,但是有很多附加功能、附加特性和可配置选项,如果您花大量时间在命令行上,您可能会很感激。

如果您熟悉bash,您可以切换到zsh而不必学习其他语法,您只需获得额外的特性。如果您熟悉zsh,就可以切换到bash而不必学习其他语法,因为您将无法访问这些特性。

bash、zsh和其他linux shell之间有什么区别?

“噢,我的ZSH”是一个工具,它可以帮助您更轻松地启用ZSH插件并在预先**的主题之间切换,快速定制ZSH shell,而无需花费数小时来调整内容。

还有其他的贝壳。例如,tcsh shell仍然存在,并且仍然是一个选项。FreeBSD使用tsch作为默认的根shell,使用ash作为默认的交互shell。如果您经常使用C编程,tsch可能更适合您。然而,它远没有bash或zsh那么常用。

如何在shell之间切换

换一个新的外壳来试用是很容易的。只需从Linux发行版的软件包管理器安装shell,然后键入启动shell的命令。

例如,假设您想在Ubuntu上尝试zsh。您可以运行以下命令来安装并启动它:

sudo apt install zsh zsh

然后你就会坐在一个zsh贝壳旁边。在shell处键入“exit”以离开它并返回到当前shell。

bash、zsh和其他linux shell之间有什么区别?

这只是暂时的。每当您打开一个新的终端窗口或在命令行登录到您的系统时,您将看到您的默认shell。要更改登录时看到的shell(即登录shell),通常可以使用chsh或“changeshell”命令。

要使用这个命令,您首先需要使用which命令找到shell的完整路径。例如,假设我们想要更改为zsh shell。我们将运行以下命令:

which zsh

在Ubuntu上,这告诉我们zsh二进制文件存储在/usr/bin/zsh。

运行以下命令,输入密码,系统将提示您选择新的登录shell:

chsh

根据上面的命令,我们将输入/usr/bin/zsh。在运行chsh命令并将其更改回来之前,zsh shell将是默认的。

bash、zsh和其他linux shell之间有什么区别?

  • 发表于 2021-04-08 06:16
  • 阅读 ( 267 )
  • 分类:互联网

你可能感兴趣的文章

什么是shell脚本,为什么要使用它

...在删除任何文件,如果需要这些文件,可以将它们复制到其他位置。 ...

  • 发布于 2021-03-13 04:53
  • 阅读 ( 250 )

顶级网站和书籍,让您成为linux命令行英雄

... 因此,请随意将我们的Linux部分与上面列出的其他站点一起添加书签。 ...

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

如何在windows10上获得linux bash shell

... 其他方法可用于启动所选的Linux环境。从“开始”菜单,可以输入: ...

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

如何定制mac终端并使其更有用

...提供了一个shell或命令解释器的接口,它接收命令并调用其他人来执行例程和复杂任务。 ...

  • 发布于 2021-03-21 20:13
  • 阅读 ( 272 )

如何在macos终端中定制zsh提示符

...以在黑色、白色、黄色、绿色、红色、蓝色、青色和洋红之间选择前景(文本)颜色。 ...

  • 发布于 2021-03-26 16:03
  • 阅读 ( 566 )

在linux中,“bash”是什么意思?

... 虽然shell确实通过命令启动其他应用程序,但它们本身也通常具有交互功能。 ...

  • 发布于 2021-03-28 13:14
  • 阅读 ( 453 )

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

...令行shell”。除了被吹捧为“辉煌的VGA颜色”之外,还有其他外壳的一些增强功能: ...

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

如何使用受限shell来限制linux用户可以做什么

...一个shell。这是标准外壳的另一种模式。Bash、Korn、Fish和其他shell都可以在受限shell模式下启动。在本文中,我们将使用Bash,但相同的原则也适用于其他shell。 因为受限shell只是使用标准shell的另一种方式,所以它们很容易设置。...

  • 发布于 2021-03-31 10:57
  • 阅读 ( 388 )

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

Bash不是唯一的Linux shell。很容易尝试其他的shell,比如非常流行的Zsh。找到一个您喜欢的shell后,使用chsh命令将其设置为默认shell。我们会教你怎么做。 为什么贝壳很重要 shell位于您和操作系统之间。它在终端窗口内提供环境...

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

如何在linux上的bash中设置环境变量

...境变量。 一些环境变量是系统范围的,或者是全局的。其他人是全会,只能由你看到。其他人无法引用您的会话环境变量。在shell中定义了第三组环境变量。您的区域设置、时区和键盘设置、shell尝试查找命令时搜索的目录集以...

  • 发布于 2021-04-02 06:44
  • 阅读 ( 223 )
c9033ow4
c9033ow4

0 篇文章

相关推荐