linux系统的shell介于系统内核与用户之间,相当于系统与用户间的桥梁,负责解析输入的命令和输出的二进制码。另外,shell也属于一种程序设计语言,为用户提供操作机器的交互接口,使用户输入的命令能够传送到内核执行并把处理结果反馈回来。
1.shell的发展类型
在linux系列系统下,其内置多种类型及功能不同的shell,而在CentOS下内置的shell并不多,可在/etc/shells文件下找到CentOS所支持的shell,具体如下:
[root@system ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/ccsh
2.shell的作用概述
系统启动后,shell在用户登录前就被系统初始化,并在用户登录系统后产生一些新的子shell,因此只要用户登录就可以执行操作,而不需要开启shell。当然,在图形界面下开启一个终端窗口,实际上就是开启一个子shell。
对于计算机,它只能识别0和1的机器码。但在使用计算机时输入的并非是机器码,而是由一些字母或字母和数字组成的指令。这些指令在通过shell后就被翻译成0和1所组成的一串机器码,然后传送到内核中执行,并把执行结果输出。
事实上,shell是命令语言、命令解释程序及程序设计语言的统称。简单地说,shell是Linux系统内核层与用户层之间的桥梁,为用户提供使用操作系统资源的接口。
Linux系统下的每个shell程序被称为一个脚本,通过它可以将系统调用、公共程序、工具以及编译过的二进制程序粘合在一起并建立应用。
3.shell的工作原理
在Linux系统下的shell是用户与系统内核交流的接口,负责将用户执行的命令翻译成机器码后送到系统的内核执行并将执行结果返回。shell命令语言解释程序是Linux系统为用户提供的最重要的系统程序,但shell并不属于系统内核的组成部分,而是在系统内核之外,并以用户态的方式运行。在整个用户空间中,shell位于用户层的下面,并与内核空间的内核相接。实际上,shell是系统在初启后为用户启动的一个独立的进程。