前面讲过,在 Linux 系统中 “一切皆文件”,Linux 命令也不例外。

那么,当编辑完成 Linux 命令并回车后,系统底层到底发生了什么事情呢?

简单来说,Linux 命令的执行过程分为如下 4 个步骤。

1) 判断路径

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

2) 检查别名

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

例如,我们经常使用的 rm 命令,其实就是 rm -i 这个整体的别名:[root@localhost ~]# alias rm

alias rm='rm -i'

这使得当使用 rm 命令删除指定文件时,Linux 系统会要求我们再次确认是否执行删除操作。例如:[root@localhost ~]# rm a.txt

rm: remove regular file 'a.txt'? y

[root@localhost ~]#

这里可以使用 unalias 命令,将 Linux 系统设置的 rm 别名删除掉,执行命令如下:[root@localhost ~]# alias rm

alias rm='rm -i'

[root@localhost ~]# unalias rm

[root@localhost ~]# rm a.txt

[root@localhost ~]#

注意,这里仅是为了演示 unalisa 的用法,建议读者删除 rm 别名之后,再手动添加到系统中,执行如下命令即可再次成功添加:[root@localhost ~]# alias rm='rm -i'

3) 判断是内部命令还是外部命令

Linux 命令行解释器(又称为 Shell)会判断用户输入的命令是内部命令还是外部命令。其中,

内部命令指的是解释器内部的命令,会被直接执行;

而用户通常输入的命令都是外部命令,这些命令交给步骤四继续处理。

内部命令由 Shell 自带,会随着系统启动,可以直接从内存中读取;而外部命令仅是在系统中有对应的可执行文件,执行时需要读取该文件。

判断一个命令属于内部命令还是外部命令,可以使用 type 命令实现。例如:[root@localhost ~]# type pwd

pwd is a shell builtin

[root@localhost ~]# type top

top is /usr/bin/top

4) 查找外部命令对应的可执行文件

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

linux命令we,Linux 命令执行过程相关推荐

  1. Linux进程的分析和执行过程

    摘自:http://jingshengsun888.blog.51cto.com/1767811/1242215 一 分析 1 分析工具 strace -p 进程号 每一行都是一条系统调用,等号左边是 ...

  2. python执行shell命令、并获取执行过程信息_python执行使用shell命令方法

    1. os.system(shell_command) 直接在终端输出执行结果,返回执行状态0,1 此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出状态,如果 ...

  3. linux 命令tf,Linux文件管理命令

    本篇涉及命令:cat,tac,more,less,head,tail,file,stat,touch,which,whatis,whereis,ls,mkdir,rmdir,tree,cp,mv,rm ...

  4. linux每隔多久调度y,Linux 进程调度+Linux系统一般执行过程 笔记

    进程的调度时机与进程的切换 操作系统原理中介绍了大量进程调度算法,这些算法从实现的角度看仅仅是从运行队列中选择一个新进程,选择的过程中运用了不同的策略而已. 对于理解操作系统的工作机制,反而是进程的调 ...

  5. 初探 Go 的编译命令执行过程

    引言 Go 语言这两年在语言排行榜上的上升势头非常猛,Go 语言虽然是静态编译型语言,但是它却拥有脚本化的语法,支持多种编程范式(函数式和面向对象).Go 语言最最吸引人的地方可能是其原生支持并发编程 ...

  6. Linux 系统调用的执行过程

    什么是系统调用 系统调用 (在 Linux 中常称为 syscalls ) 是应用程序访问硬件设备之间的桥梁. 系统调用层为用户空间提供一种硬件的抽象接口,使得用户不用关注设备的具体信息,同时系统调用 ...

  7. Linux内核学习:EXT4 文件系统在 Linux 内核系统中的读写过程

    目录 1 概述 2 虚拟文件系统 与 Ext4 文件系统 2.1 sys_write( ) 代码跟踪 2.2 sys_write( ) 过程分析 2.3 sys_write( ) 的核心部分 vfs_ ...

  8. BootLoader、Linux Kernel(linux内核)、RootFile(根文件系统)

    这3部分是怎么相互协作来构成这个系统的呢? 各自有什么用呢? 三者有什么联系? 怎么联系? 系统的执行流程又是怎么样的呢? 搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制作这个linux系统 ...

  9. Linux命令执行过程中的配置文件信息

    命令执行过程 前面讲到过使用 alias 可以建立别名,比如创建了一个 ls 的别名,其实 ls 有少的指令,那么到底是哪一个会被选中执行呢?基本上,指令运行顺序可以这样看: 以相对.绝对路径执行命令 ...

  10. Linux 命令的执行过程/Shell提示符/alias命令

    在 Linux 系统中"一切皆文件",Linux 命令也不例外.那么,当编辑完成 Linux 命令并回车后,系统底层是怎么执行的? 1) 内核层 内核层是 UNIX/Linux 系 ...

最新文章

  1. Cow Toll Paths(floyd变形)
  2. uva 12108 Extraordinarily Tired Students(特别困的学生)
  3. [NVIDIA] Ubuntu 20.04 安装 nvidia-460 + cuda-11.2
  4. set和map去重调用什么方法_Es6中Map对象和Set对象的介绍及应用
  5. 剑指offer面试题10- II. 青蛙跳台阶问题(动态规划)(递归)(斐波那契数列)
  6. 思科交换机设置端口 trunk 模式报错
  7. 用HTML来做导航栏
  8. 金税盘没有及时清卡怎么办
  9. 华为路由器——BGP路由技术详解
  10. 【转】 CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
  11. css3箭头水平淡入淡出
  12. android按钮被遮住,解决Android 虚拟按键遮住了页面内容的问题
  13. c语言画简谐振动图像,[求助] 实心小球沿正弦曲线运动
  14. 最全的厚黑学...教你怎样混社会(转...作者不是一般的城府,但这就是中国真实的社交关系,深的很)
  15. 安装mysql出现问题:由于找不到VCRUNTIME140_1.dll,无法继续执行代码。重新安装程序可能会解决此问题
  16. IBM:协作有道 创新无限
  17. SAP 消息号 KI261 成本中心 XXXX/XXXXX 冻结而不能直接对 XXXX.XX.XX 收入记帐 的问题处理
  18. 转载--期指迎来首个交割日
  19. 北京理工大学计算机保研面试,保研之旅2:北京理工大学雷达所面试
  20. 工业相机接口和采集卡

热门文章

  1. C++_Hash容器总结
  2. SVO深度解析(三)之深度滤波(建图部分)
  3. 论文笔记_S2D.03-2012-BMVC-目标类别分割和稠密立体重建的联合优化
  4. Bug: tf.contrib.checkpoint.NoDependency object
  5. 用OpenCV制作一个低成本的立体相机
  6. Asp.Net Core 入门(八)—— Taghelper
  7. H - 数论中的异或 HRBUST - 1688
  8. redis 一主二从三哨兵
  9. 老调重弹:对kvo的封装思路
  10. 说一说javascript跨域和jsonp