首页 > 编程笔记

Shell是什么(入门必读)

Shell 俗称壳,取这个名字是用来区别内核的“核”字,它是 Linux 操作系统的命令语言,同时又是该命令语言的解释器程序的简称。也就是说,Shell 既是一门编程语言,又是一个用 C语言编写的程序软件。


图 1 Linux操作系统结构图

Shell 的位置处在用户与内核之间,起到承上启下的作用。由于安全性、复杂性和步骤烦琐等各种原因,普通用户是不能直接接触 Linux 内核的,那就需要另外再开发一个程序,这个程序的作用就是接收用户的操作命令,进行一些处理,最终将这些操作信息传递给内核。

这里的处理过程,可以理解为“将用户的各种操作转换为内核能看懂的语言”,相当于一个翻译官的角色,这样用户就能间接地使用操作系统内核了。

Shell 是在用户和内核之间增加的一层“代理”,既能简化用户的操作,又能保障内核的安全,两全其美。

总之,Shell 是一个程序软件,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。使用 Shell 可以实现对 Linux 操作系统的大部分管理。

Linux 操作系统有多种发行版本,这些发行版是由不同的组织机构开发的。不同的组织机构为了发展出自己的 Linux 操作系统特色,就会开发出功能类似但特性不同的软件,Shell 就是其中之一。

不同特性的 Shell 各有所长,有的占用资源少,有的支持高级编程功能,有的兼容性好,有的重视用户体验等。常见的Shell类型见下表。

表 1 常见的 Shell 类型
常见的Shell类型 介  绍
sh 全称叫 Bourne Shell,由 AT&T 公司的 Steve Bourne 开发,是 UNIX 系统上的标准 Shell
csh 由柏克莱大学的 Bill Joy 设计,语法有点类似于 C语言,所以才得名为 C Shell,简称为 csh
tcsh csh 的增强版,加入了命令补全功能,提供了更强大的语法支持
ash -个简单的、轻量级的 Shell,占用资源少,适合运行于低内存环境
bash 由 Brian Fox 为 GNU 项目编写的 UNIX Shell 和命令语言,保持了对 sh 的兼容性,是许多 Linux 发行版的默认 Shell

Bash 作为许多 Linux 发行版的默认 Shell,它的特性如下:

这些特性后面会经常用到,这里可先了解,不明白也没关系,之后边实践边学习,很快就能掌握。

最后再讲个小知识,Shell 程序一般都是放在 /bin 或者 /usr/bin 目录下,当前的 Linux 操作系统都支持哪些 Shell 程序,可以在 /etc/shells 文件中通过 cat 命令查看。
[root@noylinux]# cat /etc/shells
/bin/sh
/bin/bash
......
/bin/zsh

推荐阅读