在Linux中有哪些不同类型的外壳?

在Linux中,shell是任何用户会话的重要组成部分。我们在Linux中提供了几种不同类型的shell来完成任务。每个shell都有独特的属性。因此,在特定要求下,有许多情况下其中一个shell比其他shell更好。

这使得我们了解Linux中不同类型的shell非常重要。在本教程中,我们将讨论shell是什么以及为什么它很重要。

此外,我们还将探索Linux中不同类型的shell,以了解它们的功能和特性。

什么是Shell,为什么我们需要它们?

每当用户登录系统或打开控制台窗口时,内核就会运行一个新的shell实例。内核是任何操作系统的核心。

它负责处理、管理和执行流程,并确保系统资源的适当利用。

一个 shell 是一个在用户和内核之间充当界面的程序。它允许用户向内核发送命令,并从内核接收响应。通过 shell,我们可以在内核上执行程序和实用工具。因此,从本质上讲,shell 是用于在我们的系统上执行其他程序的程序。

能够与内核互动使得 Shell 成为一个强大的工具。如果用户无法与内核进行交互,就无法访问其机器操作系统提供的工具。

让我们来了解一下Linux环境中的主要外壳(shell)。

Linux中的不同类型的外壳

如果你现在已经理解了什么是内核,什么是Shell,以及为什么Shell对Linux系统如此重要,那么让我们继续学习不同类型的可用Shell吧。

每个壳都具有特定用途上的高效性,使其相较其他壳而言更加具有优势。因此,让我们讨论Linux中各种类型的壳以及它们的特性和功能。

1. Bourne Shell(sh)

史蒂夫·伯恩在AT&T Bell实验室开发的伯恩 shell(即sh)被认为是第一个UNIX shell。由于其紧凑的特性和高速操作的优势,它受到了广泛的欢迎。

这就是使其成为Solaris操作系统的默认shell的原因。它也被用作所有Solaris系统管理脚本的默认shell。从这里开始阅读有关shell脚本的内容。

然而,Bourne shell 有一些主要的缺点。

  • It doesn’t have in-built functionality to handle logical and arithmetic operations.
  • Also, unlike most different types of shells in Linux, the Bourne shell cannot recall previously used commands.
  • It also lacks comprehensive features to offer a proper interactive use.

Bourne shell的完整路径名是/bin/sh和/sbin/sh。默认情况下,它对于根用户使用提示符#,对于非根用户使用提示符$。

2. GNU Bourne-Again Shell(bash)

更通俗地称之为Bash shell,GNU Bourne-Again shell的设计目标是与Bourne shell兼容。它融合了Linux中不同类型的shell,如Korn shell和C shell,以提供更多有用的功能。

它能够让我们利用箭头键来自动调用之前使用过的命令并进行编辑,这与Bourne shell不同。

GNU Bourne-Again shell的完整路径名为/bin/bash。默认情况下,对于root用户,它使用的提示符是bash-VersionNumber#,而对于非root用户,则是bash-VersionNumber$。

3. C Shell(csh)

C shell(csh)是由比尔·乔伊(Bill Joy)在加利福尼亚大学创建的。它包括了支持算术运算和类似于C编程语言的语法等有用的编程特性。

此外,它还整合了命令历史记录功能,而这是类似Bourne shell等Linux中的其他类型的shell所缺少的。C shell的另一个显著特点是”别名”功能。

C shell的完整路径名称是/bin/csh。默认情况下,它对于root用户使用prompt主机名#,对于非root用户使用主机名%。

4. Korn Shell(ksh)

Korn shell(Ksh)是由David Korn在AT&T贝尔实验室开发的,旨在改进Bourne shell。Korn shell本质上是Bourne shell的超集。

除了支持 Bourne shell 可以支持的一切,它还提供了新的功能。它不仅支持内置的算术运算,还提供了类似于 C shell 的交互式功能。

Korn shell是针对Bourne shell编写的脚本运行环境,同时提供类似于C编程语言的字符串、数组和函数操作。它还支持为C shell编写的脚本。此外,在Linux中,它比大多数其他类型的shell(包括C shell)更快速。

Korn shell的完整路径名称为/bin/ksh。默认情况下,它在根用户下使用#作为提示符,在非根用户下使用$作为提示符。

5. Z Shell (zsh)

Z Shell或者zsh是一个sh shell扩展,它提供了大量的改进和个性化选项。如果你想要一个拥有更多功能的现代化shell,那么zsh shell就是你要找的。

一些值得注意的 Z Shell 特性包括:

  • Generate filenames based on given conditions
  • Plugins and theming support
  • Index of built-in functions
  • Command completion
  • and many more…

让我们在下面的表格中总结一下我们在本教程中讨论过的不同的Linux shell。

Shell Complete path-name Prompt for root user Prompt for non root user
Bourne shell (sh) /bin/sh and /sbin/sh # $
GNU Bourne-Again shell (bash) /bin/bash bash-VersionNumber# bash-VersionNumber$
C shell (csh) /bin/csh # %
Korn shell (ksh) /bin/ksh # $
Z Shell (zsh) /bin/zsh <hostname># <hostname>%

总结

命令行是Linux用户最强大的工具之一,如若没有命令行,一个人几乎无法利用其系统上安装的内核所提供的特性和功能。

尽管我们只涉及了Linux中最常用的Shell类型,但还有许多其他值得探索的shell类型。

希望这个教程能帮助您理解shell的概念,以及Linux中不同类型的shell的特性。如果您有任何反馈、疑问或建议,请在下方评论中随时与我们联系。

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds