一. 什么是Shell
1. 在学习Shell编程之前,我们应该要先知道什么是Shell
用户、Shell、Linux内核、硬件的关系如下图:
Shell是一个应用程序,也可以说是一个命令解释器,它是用户和Linux内核之间的桥梁,可以将用户在图形界面上的操作或在终端输入的命令传递给Linux内核,然后Linux内核再调度各个硬件及其他资源来完成用户的操作。
什么是Linux的内核?在Linux操作系统中,真正能够操作计算机硬件完成某个用户功能的那一部分被称为Linux系统的内核。用户在使用Linux系统时,是不可以直接操作内核的,而是通过Shell来间接的操作内核的。Shell不属于内核的一部分,而是在Linux内核之外开发的应用程序,它将接收到的用户鼠标点击操作或输入的命令传递给内核,而内核再去调度硬件去完成指定的操作。这样用户就不需要直接操作内核,而是通过Shell间接地操作内核,内核也不会被直接的暴露于外部,保障了内核的安全性,也简化了用户的操作。
Shell这个应用程序是开机即启动的,我们在操作Linux系统时,无时不刻都在直接或者间接地通过Shell去操作Linux内核。其实,在没有图形化界面之前,用户是通过终端或者控制台直接地去调用Shell这个应用程序,然后通过输入命令来操作Linux系统的。用户在控制台或者终端上看到的 $ 和 # 其实就是Shell的命令提示符,这表明用户已经进入了Shell这个程序,只需要输入命令,即可通过Shell来操作Linux内核。只不过root用户登录显示$,而普通用户登录显示#。