Linux shell类型

什么是shell

Linux 系统的 shell 作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言。

shell 是用户和 Linux 内核之间的接口程序,如果把 Linux 内核想象成一个球体的中心,shell 就是围绕内核的外层。当从 shell 或其他程序向 Linux 传递命令时,内核会做出相应的反应。

shell 是一个命令语言解释器,它拥有自己内建的 shell 命令集,shell 也能被系统中的其他应用程序所调用。用户在提示符下输入的命令都由 shell 先解释然后传给 Linux 核心。

有一些命令,比如改变工作目录命令 cd,是包含在 shell 内部的。还有一些命令,比如拷贝命令 cp 和移动命令 rm,是存在于文件系统中的某个目录下的单独的程序。对用户来讲,不必关心一个命令是建立在 shell 内部还是单独的程序。

shell 首先检查命令是否是 内部命令,若不是再检查是否是一个应用程序,然后 shell 在搜索路径里寻找这些应用程序。如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够找到命令,该内部命令或应用程序将被分解为系统调用并传给 Linux 内核。

shell 的另一个特性是它自身是一个解释型的程序设计语言,shell 程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。

Linux shell的种类

Linux 中的 shell 有多种类型,其中最常用的几种是 bourne shell(sh)、c shell(csh)、korn shell(ksh)。三种 shell 各有优劣。

sh 是 Unix 最初使用的 shell,并且在每种 Unix 上都可以使用。sh 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如 csh 和 ksh。

Linux 默认的 shell 是 bourne again shell(bash),它与 sh 完全向后兼容。bash 放在 bin/bash 中,它有许多特色,可以提供如 命令补全、命令编辑和命令历史表等功能它还包含了很多 csh 和 ksh 中的优点,有灵活和强大的编程接口,同时又有友好的用户界面。

因此,我们至少得知道 sh 和 bash 都是 Linux 上的默认 shell,而 bash 是 sh 的升级版。

Linux各种shell区别

bash

大多数 Linux 系统默认使用的 shell,bash shell 是 Bourne shell 的一个免费版本,它是最早的 Unix shell,bash 还有一个特点,可以通过 help 命令
来查看帮助。包含的功能几乎可以涵盖 shell 所具有的功能,所以一般的 shell 脚本都会指定它为执行路径。

csh

C shell 使用的是 “类C” 语法,csh 是具有 C 语言 风格的一种 shell,其内部命令有 52 个,较为庞大。目前使用的并不多,已经被 /bin/tcsh 所取代。

ksh

Korn shell 的语法与 Bourne shell 相同,同时具备了 C shell 的易用特点。许多安装脚本都使用 ksh,ksh 有 42 条内部命令,与 bash 相比有一定的限制性。

tcsh

tcsh 是 csh 的增强版,与 C shell 完全兼容。

sh

是一个快捷方式,已经被 /bin/bash 所取代。

nologin

指用户不能登录。

zsh

目前 Linux 里最庞大的一种 shell:zsh。它有 84 个内部命令,使用起来也比较复杂。一般情况下,不会使用该 shell。

Linux shell类型总结

Linux 系统的 shell 作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言。shell 是用户和 Linux 内核之间的接口程序。

Linux 中的 shell 有多种类型,其中最常用的几种是 bourne shell(sh)、c shell(csh)、korn shell(ksh)。