从使用层次上来看, GNU/Linux体系结构分为两层:
1. 用户空间:C库、用户应用程序
2. 内核空间:系统调用接口、内核、硬件平台依赖代码
当然实际上,我们操作系统一般是会访问系统资源---硬件,所以在以上两层之下,还有硬件层。所以共三层。
GNU/Linux系统组成
如图所示,你看到内核空间中内核有五大作用(详细点的介绍请看:):
1. 进程管理
2. 内存管理
3. 文件系统支持
4. 设备控制
5. 网络服务
看到这里可能会对shell有困惑,它到底是个啥东西?
Shell功能有二,一可以说是软件(命令解析器),为使用者提供操作界面,应用空间和内核空间沟通的桥梁;二可以说是一种交互式命令语言,支持控制/循环/函数等高级语言语法,可以组合各种命令到一个脚本文件中,然后进行按照特定逻辑连续处理。
Shell的类型有很多,所以在使用方式上,有命令行式的,也有图形界面式的。在UNIX中主要有:
1. Bourne shell (包括 sh,ksh,and bash)
2. Korn shell ( ksh)
3. Bourne Again shell ( bash)
4. POSIX shell ( sh)
5. C shell (包括 csh and tcsh)
6. C shell ( csh)
比较常用的有 POSIX shell(sh)和Bourne Again shell (bash).
Bourne Again Shell (bash)
bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。
POSIX Shell
POSIX shell 是Korn shell的一个变种. 一部分操作系统的缺省的shell就是/bin/sh