在命令提示符后输入一条命令后,shell会读入这个命令行并对命令行进行解析,将其分解为词,称作token。token之间用空格或制表符分隔,命令行以换行符结尾。接下来,shell检查第一个词是否为内置命令或磁盘上的可执行程序。如果是内置命令,shell就在自己内部执行它。否则,shell将在路径变量所指的目录中查找这个程序。如果找到了命令的程序,shell就创建一个进程来执行它。之后,shell进入睡眠(或等待)状态直至程序执行完毕。shell会根据需要报告程序的退出状态。此时,屏幕上又会出现命令提示符,整个过程从头开始。命令行的处理顺序如下:
(1) 执行历史命令替代(hash 视情况而定)
(2) 命令行被分解为token(或称“词”)
(3) 更新历史命令(视情况而定)
(4) 引用的处理
(5) 别名替代和函数的定义(alias->keyword->function->built-in->$PATH视情况而定)
(6) 设置重定向,后台进程和管道
(7) 执行变量替换(如$name,$user等)
(8) 执行命令替换(如`date`代替Today)
(9) 执行称为globbing的文件名替换(如cat abc.??,rm *.c等)
(10) 执行命令
图片传不上,下次再传!