为了能对shell能够有整体的认识,我们有必要先简单介绍下Linux系统 。
Linux系统
Linux 系统主要分为4部分:
- Linux内核
- GNU工具
- 图形化桌面环境
- 应用软件

Linux内核
内核主要负责以下四种功能:
- 系统内存管理:物理内存、虚拟内存
- 软件程序管理:Linux操作系统将运行中的程序称为进程。内核控制着Linux系统如何管理运行在系统上的所有进程。内核创建了第一个进程(称为init进程)来启动系统上所有其他进程,Linux使用一个表来管理在系统开机时要自动启动的进程。Linux操作系统的init系统采用了运行级。运行级决定了init进程运行/etc/inittab文件或 /etc/rcX.d目录中定义好的某些特定类型的进程(X代表运行级)。Linux操作系统有5个启动运行级。每个启动运行级便是一种启动模式。
- 硬件设备管理:内核的另一职责是管理硬件设备。任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之 间交换数据。
-
文件系统管理:不同于其他一些操作系统,Linux内核支持通过不同类型的文件系统从硬盘中读写数据。Linux系统可以用来读写数据的标准文件系统如下图:
Linux文件系统.png
GNU 工具
操作系统用以执行一些标准功能,比如控制文件和程序的工具。Linus在创建Linux系统内核时,没有可用的系统工具。GNU是由GNU组织(GNU是GNU’s Not Unix的缩写)开发了一套完整的Unix工具,是开源的,但没有运行它们的内核系统。于是将Linus的Linux内核和GNU操作系统工具 整合起来,就产生了一款完整的、功能丰富的免费操作系统:GNU/Linux系统(为了感谢GNU组织)也称:Linux系统。
GNU分两部分:
- 核心GNU工具(core utilities):由处理文件、操作文本、管理进程三部分工具包组成
Shell
Shell介绍
Shell是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。也就是Shell负责将命令行中输入的文本命令,进行解释,并传递到内核进行执行的工具,也可称解释器。
Shell的核心是命令行提示符
。命令行提示符是Shell负责交互的部分,它允许你输入文本命令,然后解释命令,并在内核中执行。
Shell 脚本:也可以将多了shell命令放入文件中作为程序执行,这个文件便被称为:Shell 脚本
。
在Linux系统上,通常有好几种Linux shell可用。不同的shell有不同的特性,有些更利于创建脚本,有些则更利于管理进程。所有Linux发行版默认的shell都是bash shell
。
bash shell
由GNU组织开发,被当作标准Unix shell——Bourne shell
(以创建者的名字命名)的替代品。bash shell
的名称就是针对Bourne shell的拼写所玩的一个文字游戏,称为Bourne again shell
。总结:sh
是标准,bash
是sh
的替代品。
除了bash shell
,Linux中常见的几种不同shell有:
shell | 描述 |
---|---|
ash | 一种运行在内存受限环境中简单的轻量级shell,但与bash shell完全兼容。 |
korn | 一种与Bourne shell兼容的编程shell,但支持如关联数组和浮点运算等一些高级的编程特性。 |
tcsh | 一种将C语言中的一些元素引入到shell脚本中的shell |
zsh | 一种结合了bash、tcsh和korn的特性,同时提供高级编程特性、共享历史文件和主题化提示符的高级 shell |
图形化桌面环境
发行版:完整的Linux系统包。
发行版 | 描述 |
---|---|
CentOS | 一款基于Red Hat企业版Linux源代码构建的免费发行版 |
Ubuntu | 一款用于学校和家庭的免费发行版 |
PCLinuxOS | 一款用于家庭和办公的免费发行版 |
Mint | 一款用于家庭娱乐的免费发行版 |
dyne:bolic | 一款用于音频和MIDI应用的免费发行版 |
Puppy Linux | 一款适用于老旧PC的小型免费发行版 |
从 macOS Catalina 版开始,苹果的Mac系统将使用 zsh 作为默认登录 Shell 和交互式 Shell。具体请看细节。
参考资料:
Linux命令行与shell脚本编程大全
网友评论