码迷,mamicode.com
首页 > 系统相关 > 详细

Linux命令执行流程

时间:2019-11-05 21:52:35      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:替换   读取   就是   外部命令   ping   文件   输入   总结   保存   

当我们执行一条命令的时候,整个命令执行流程如下:

1、判断路径

判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话,直接执行。

2、检查别名

Linux 系统会检查用户输入的命令是否为“别名命令”。要知道,通过 alias 命令是可以给现有命令自定义别名的,即用一个自定义的命令名称来替换原本的命令名称。

3、判断用户输入的是内部命令还是外部命令

Linux命令行解释器(又称为 Shell)会判断用户输入的命令是内部命令还是外部命令。其中,内部命令指的是解释器内部的命令,会被直接执行;而用户通常输入的命令都是外部命令。
内部命令: Shell 自带,会随着系统启动,可以直接从内存中读取
外部命令:在系统PATH变量的某个路径下的可执行文件
判断一个命令属于内部命令还是外部命令,可以使用 type 命令查看。

4、内部命令直接执行,外部命令检测是否存在缓存

5、检测PATH路径,有执行,无报错。

当用户执行的是外部命令时,系统会在指定的多个路径中查找该命令的可执行文件,而定义这些路径的变量,就称为 PATH 环境变量,其作用就是告诉 Shell 待执行命令的可执行文件可能存放的位置,也就是说,Shell 会在 PATH 变量包含的多个路径中逐个查找,直到找到为止(如果找不到,Shell 会提供用户“找不到此命令”)。

事实上执行过的外面命令都会保存在内部缓存中,当再次执行相同的命令,会通过缓存调取执行,也就意味着不会搜索PATH路径。

总结,当我们执行一个ping命令之后,整个命令执行的流程步骤如下:
1.检查执行的是否是绝对路径执行
2.检查ping命令是否存在别名
3.检查ping命令是内部命令还是外部命令
4.如果是内部命令直接执行
5.如果是外部命令,检查ping命令是否有缓存,如果没有,查找PATH变量
6.检查PATH路径直到查找到该命令然后执行
7.如果没有找到该命令则返回错误,command not found。

Linux命令执行流程

标签:替换   读取   就是   外部命令   ping   文件   输入   总结   保存   

原文地址:https://www.cnblogs.com/liuzgg/p/11801538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!