首页 > 代码库 > Shell命令机制

Shell命令机制

     上篇文章只要是讲了Linux一些基本概述。

        我们这次开始打好命令行操作的基础,以后再靠一些图形化的操作来提升我们的工作效率。

        既然要学习Linux操作系统,我们就要去学习它的命令,总所周知,Linux的图形界面是不稳定的,它的图形界面只不过是一个应用程序,所以很容易奔溃。所以我们应该学习图形下面的一些机制,包括用命令行去实现一些东西,用shell去实现一些东西,包括去理解它的内部机制。

当然这些命令去死记硬背是不行的。

启动虚拟机,启动Ubuntu。

图形界面 切换到 命令行 是按 ctrl+alter+ F2 或 F3 或 F4

命令行 切换回 图形界面 ctrl+alter+ F7

1、第一个命令:ls

列出文件下的所有文件,ls其实就是list的一个缩写

现在我们来分析一下这个命令是怎么实现的,实现机制是什么样的?

从字面理解,shell是贝壳/外壳的意思。

比方说  A--》这个是操作系统的内核kernel,在kernel之上呢我们就会有用户接口的定义,然后再往上我们有一个外壳把它包裹起来,这个外壳里有很多命令工具,我们通过这些命令工具和编写我们自己的Shell脚本命令,有点类似于Windows下面的批处理,通过这些来实现对下面的访问。

所以ls的实现过程是这样的:

(1)输入了ls

(2)ls->去相应的目录去找shell命令程序,那这个shell去哪里找呢,当然是在path里找,那么这个path在哪里设置呢?环境变量。

(3)找到了之后就要执行,执行是基于Shell的一些基本库,比如说在Ubuntu里面我们的Shell采用的是Bash 

(4)最后就是访问kernel内核

现在我们来看一下这个path是在哪里配置的,这样我们才能知道ls命令在哪里。

我们看path之前呢,先看一个新的命令

whereis  ls

打印出来ls: /bin/ls  /usr/share/man/man1/ls.1.gz

我们来查找一下/bin/ls这个目录

ls /bin/ls

打印出来 /bin/ls  显示是绿色,说明它是个可执行文件


那下面我们看一下环境变量是否真的指向 /bin/ls ,那么环境变量在哪呢?我们想象一下我们之前说的那个文件夹是做配置的,好像是etc这个文件夹对不对。

我们进入etc文件夹看一下

cd etc

那么环境变量是在 /etc/environment下,我们ls一下

ls /etc/environment

打印出来 /etc/environment , 我们得知是一个一般文件

我们用vi工具打开该文件

vi /etc/environment

我们可以看到确实有个PATH

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games"

也就是说ls执行的时候就会去这些文件下去找可执行文件

通过bash对ls进行解析

2、Linux是如何实现Shell的

(1)Bash

(2)Coreutils

要了解这两块我们不得不去说一下GNU,去查一下GNU的翻译

Bash和Coreutils是在GNU上开发的

GNU的官网: http://www.gun.org/

里面有对于GNU Bash的介绍

下载一下bash

我们可以通过bash -version查看当前bash版本

怎么办bash移植到我们的系统里面,不用命令怎么手动移植,可以查看帮助文档


一定要理解GUN与Linux的关系





Shell命令机制