当你打开终端并输入命令时会发生什么?(下)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
终端命令执行过程概述
本文回顾了文章《当你打开终端并输入命令时会发生什么?(上)》中关于终端命令执行的过程。终端设备的起源、演变以及现代计算机中终端模拟器的使用被简要介绍。
终端的起源和演变
终端设备起源于二战时期的电传打字机,并随着显示技术的发展,演变为带有显示屏的设备。现代个人电脑普及后,图形用户界面(GUI)取代了传统终端,终端模拟器如Linux中的Xterm和Windows中的控制台成为与操作系统交互的主要方式。
终端中的命令执行
在Linux中,打开终端通常会启动shell进程,用户输入的命令被传递给shell进行解析和执行。命令执行的过程涉及将用户输入解析为系统能理解的指令,执行这些指令,并将结果返回给终端显示。
字符输入与处理
用户在终端中输入的字符,如backspace键,被转换成字符编码并通过终端写入PTY leader。TTY driver从PTY leader读取字符并存储到line discipline,后者负责解释字符并执行相应的编辑操作。例如,backspace键会被解释为ERASE字符,从而删除最后一个字符。
特殊字符与命令输入的处理
特殊字符,如CTRL+C,由line discipline解释并可发送信号如SIGINT以中断进程。普通字符输入如ls命令会被line discipline处理并返回到PTY leader,之后终端程序读取并显示它们。
命令解析与执行
当用户完成命令输入并按下回车键后,line discipline将其解释为换行字符并将命令传递给PTY follower。Shell进程接收并开始解析命令,包括语法分析、查找可执行文件或内置命令。解析过程中,会递归查找命令别名、函数、环境变量、内嵌命令和可执行文件。
命令执行结果的返回
命令执行完毕后,shell将结果写入PTY follower,然后传到line discipline,最终由终端读取并显示到屏幕上。
想要了解更多内容?