Unix shell
Unix shell,一种壳层与命令行界面,是UNIX操作系统下传统的用户和计算机的交互界面。第一个用户直接输入命令来执行各种各样的任务。
普通意义上的shell就是可以接受用户输入命令的程序。它之所以被称作shell是因为它隐藏了操作系统低层的细节。同样的Unix下的图形用户界面GNOME和KDE,有时也被叫做“虚拟shell”或“图形shell”。
这是基本的一个输出声音所需要的步骤!
也就是说,你必须要『输入』一个命令之后, 『硬件』才会透过你下达的命令来工作!那么硬件如何知道你下达的命令呢?那就是 kernel (核心) 的控制工作了!也就是说,我们必须要透过『 Shell 』将我们输入的命令与 Kernel 沟通,好让 Kernel 可以控制硬件来正确无误的工作! 基本上,我们可以透过底下这张图来说明一下:
各种Unix shell
第一个Unix shell是由肯·汤普逊,仿效Multics上的shell所实现出来,称为sh。
由于早年的 Unix 年代,发展者众,所以由于 shell 依据发展者的不同就有许多的版本,例如常听到的 Bourne SHell (sh) 、在 Sun 里头默认的 C SHell、 商业上常用的 K SHell、, 还有 TCSH 等等,每一种 Shell 都各有其特点。至于 Linux 使用的这一种版本就称为『 Bourne Again SHell (简称 bash) 』,这个 Shell 是 Bourne Shell 的增强版本,也是基准于 GNU 的架构下发展出来的呦!
迭代关系:
Bourne shell兼容
- Bourne shell(sh)史蒂夫·伯恩在贝尔实验室时编写。1978年随Version 7 Unix首次发布。
- Almquist shell(ash)
- Bourne-Again shell(bash)
- Debian Almquist shell(dash)
- Korn shell(ksh)David Korn在贝尔实验室时编写。
- Z shell(zsh)
C shell兼容
- C shell(csh)比尔·乔伊在加州大学伯克利分校时编写。1979年随BSD首次发布
那么目前我们的 Linux 有多少我们可以使用的 shells 呢? 你可以检查一下 /etc/shells 这个文件,至少就有底下这几个可以用的 shells:
-
/bin/sh (已经被 /bin/bash 所取代)
-
/bin/bash (就是 Linux 默认的 shell)
-
/bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash)
-
/bin/tcsh (整合 C Shell ,提供更多的功能)
-
/bin/csh (已经被 /bin/tcsh 所取代)
-
/bin/zsh (基于 ksh 发展出来的,功能更强大的 shell)
Bash
Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。
Bash是Bourne shell的后继兼容版本与开放源代码版本,它的名称来自Bourne shell(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。
Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。和其他Unix shell 一样,它支持文件名替换(通配符匹配)、管道、here文档、命令替换、变量,以及条件判断和循环遍历的结构控制语句。包括关键字、语法在内的基本特性全部是从sh借鉴过来的。其他特性,例如历史命令,是从csh和ksh借鉴而来。总的来说,Bash虽然是一个满足POSIX规范的shell,但有很多扩展。