shell简介


一、声明

文章为学习笔记,转载请标明文章末尾的参考博文。


二、简介

shell是一个语言解释器程序,主要是解释并执行用户输入的各种命令,实现用户与linux的接口。shell不属于系统内核部分,而是在核心之外,以用户态方式运行。系统初启动后,核心为每个中断用户建立一个进程去执行shell程序。

三、shell运行的工作流程

(1)读取用户由键盘输入的命令
(2)shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。
(3)如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。
(4)如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。
(5)命令执行,并返回结果

四、shell工作原理

(1)读取用户由键盘输入的命令行。
(2)分析命令,以命令名作为文件名,并将其它参数改造为系统调用execve( )内部处理所要求的形式。
(3)终端进程调用fork( )建立一个子进程。
(4)终端进程本身用系统调用wait4( )来等待子进程完成(如果是后台命令,则不等待)。当子进程运行时调用execve( ),子进程根据文件名(即命令名)到目录中查找有关文件(这是命令解释程序构成的文件),将它调入内存,执行这个程序(解释这条命令)。
(5)如果命令末尾有&号(后台命令符号),则终端进程不用系统调用wait4( )等待,立即发提示符,让用户输入下一个命令,转⑴。如果命令末尾没有&号,则终端进程要一直等待,当子进程(即运行命令的进程)完成处理后终止,向父进程(终端进程)报告,此时终端进程醒来,在做必要的判别等工作后,终端进程发提示符,让用户输入新的命令,重复上述处理过程。

五、shell内置命令

(只列出常用,其他可参考参考博文中的博客)

cd 改变当前目录的命令
echo 输出内容
exit [n] 退出命令
pwd 打印出当前工作目录
kill [-signal process]:向由PID号或作业号指定的进程发送信号。输入kill-l查看信号列表。

六、参考博文

Linux下的shell工作原理是什么?

浅析shell的工作原理

Linux Shell 工作原理

shell内置命令和外置命令的区别

shell内置命令大全


Previous Post

shell

Next Post

linux之shell常用运算符

Related Posts