Shell 必知必会系列 | 一、Shell 解析器

  目录

一、什么是解析器 ?

二、Linux 中都有哪些解析器 ?

2.1 /bin/bash 和 /usr/bin/bash

2.2 /bin/sh 和 /usr/bin/sh

2.3 /bin/tcsh

2.4 /bin/csh

 三、总结


学习 Shell 首先需要知道 Shell 的用途,这一篇文章就给大家介绍下 Shell 解析器。 

一、什么是解析器 ?

Shell 是 Linux 操作系统下的命令行解析器,是用户和 Linux 内核交互的工具,其实 Shell 担任着类似翻译官的角色,如下图所示(纯手工制作):

图1 Linux操作系统层次结构图

从上图可以看到,解析器起名为Shell(外壳)也是有原因的,整个操作系统其实是一层层包起来的,是一层层的抽象,抽象程度越高越方便用户操作,这就类似于编程语言,汇编程序更接近于底层,再就是C语言抽象程度比汇编语言高,Java语言抽象程度更高。

那么,第一个 Unix Shell 是谁发明的呢?

肯·汤普逊在写第一版 UNIX 的时候开发了 Shell,仿效 Multics 上的 Shell 所实现出来的。

二、Linux 中都有哪些解析器 ?

Linux 解析器有如下几种:

[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
[root@localhost ~]#

在 CentOS  7 中默认使用 /bin/bash,如下所示:

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]#

2.1 /bin/bash 和 /usr/bin/bash

Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4起至macOS Mojave都将它作为默认shell,而自macOS Catalina,默认Shell以zsh取代。    ------ 维基百科

2.2 /bin/sh 和 /usr/bin/sh

如下所示,/bin/sh 和 /usr/bin/sh 是 bash 的一个软连接。

[root@localhost ~]# ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 9月  24 01:40 /bin/sh -> bash
[root@localhost ~]# ls -l /usr/bin/sh
lrwxrwxrwx. 1 root root 4 9月  24 01:40 /usr/bin/sh -> bash
[root@localhost ~]#

2.3 /bin/tcsh

tcsh 是一个向下兼容c shell的Unix shell。它本质上是为c shell增加命令补完,命令编辑等其他功能。 目前作为FreeBSD和其延伸发行版的默认shell。                  ------ 维基百科

2.4 /bin/csh

C shell 是Unix shell的一种,由比尔·乔伊在BSD系统上开发。C shell脱胎于Unix第六版的/bin/sh,也是Bourne shell的前身。这种shell的语法类似于C语言,与Bourne shell相比,C shell有不少特别的功能,比如aliases(别名)、command history(命令的历史)。目前C shell已不再被广泛使用,后继者包括Tenex C shell(tcsh)、Korn shell(ksh)、GNU Bourne-Again shell(bash)。         ------ 维基百科

 三、总结

Shell 是用户和 Linux 内核之间交互的桥梁,Shell 也是一门脚本编程语言。点击关注后面还会继续更新更多 Shell 必知必会知识点~

 

猜你喜欢

转载自blog.csdn.net/u011074149/article/details/112549892