目录
一、shell外壳程序是什么?
1、用户和操作系统间的软件层
2、Linux是一个操作系统,我们称之为“核心(kernel)”,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序。
举个例子:如果说你是一个内向害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且让你心动的小花。你看上了小花,但是又不好意思直接表白,那就让你家人找媒婆帮你提亲,所有的事情你都是直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫她王婆,她对应我们常使用的bash。
二、shell运行原理
它可以将使用者的命令翻译给核心处理同时,将核心处理的结果翻译给使用者
当然,如果我们把指令交给外壳程序,外壳程序把命令交付给OS有两种情况:
第一种:OS不认识指令时可以直接拒绝指令请求
在Linux中我们输入的命令OS并不认识,所以提示错误
[hx@VM-24-7-centos ~]$ ddd
-bash: ddd: command not found
第二种:OS即使认识,也就是指令存在,但指令并不能执行,这里涉及权限问题。
把test.c的所有权限都去除,当把"hello world"写入test.c文件中,OS不能直接执行,即使OS认识该指令。
[hx@VM-24-7-centos ~]$ touch test.c
[hx@VM-24-7-centos ~]$ ls -l test.c
-rw-rw-r-- 1 hx hx 0 Mar 30 22:02 test.c
[hx@VM-24-7-centos ~]$ chmod 000 test.c
[hx@VM-24-7-centos ~]$ ls -l test.c
---------- 1 hx hx 0 Mar 30 22:02 test.c
[hx@VM-24-7-centos ~]$ echo "hello world" > test.c
-bash: test.c: Permission denied
三、为什么我们不直接访问操作系统?
1、人不善于直接使用操作系统
2、如果让人直接访问操作系统,操作成本会很高,人可能会犯错,带来不安全因素
如何理解?
我们人不善于直接去银行进行存取业务,因为我们不知道银行内部是如何运转完成存取业务的,如果让我们代替银行工作人员来完成自己的存取业务,可能会导致一系列问题,因此我们不会直接访问操作系统的。
所以在Linux当中输入各种各样的指令,实际上不是在直接访问OS。
四、我们是如何访问操作系统的呢?
1、在windows下,我们使用图形化界面
我们操作windows不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作
例如:进入D盘的操作,或者双击一个可执行程序
2、在Linux下,我们使用指令操作
shell对于Linux有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核,内核运行出结果后。通过shell解析给用户
因此图形化界面和指令操作都是操作系统提供的外壳程序
五、外壳程序的意义
1、用户和操作系统交互中间软件层
2、可以在一定程度上保护操作系统
六、查看Linux中使用的外壳程序
通过 echo $BASH 命令在Linux中查看自己所使用的外壳程序,实际上bash是一个文件
shell外壳程序和bash程序的区别:实际就是媒婆和王婆的区别,shell外壳程序是所有外壳程序的统称。
[hx@VM-24-7-centos ~]$ echo $BASH
/bin/bash
[hx@VM-24-7-centos ~]$ ls /bin/bash -al
-rwxr-xr-x 1 root root 964536 Apr 1 2020 /bin/bash