shell执行过程

来源:互联网 发布:华3c多镜像端口配置 编辑:程序博客网 时间:2024/05/17 09:17
  • 回车之后会发生什么? 

shell解释你的命令行 

shell执行一些替换 

shell在内存中装载你的命令 

shell建立I/O的重定向 

shell执行你的命令程序 

shell等待你程序执行结束 

shell等待下一条命令 

当用户输入命令按回车之后,shell在执行命令之前会先解释该命令。当shell执行脚本文件时也是相同的顺序。 

命令执行的次序是相当重要的。如果你违反了执行的次序将会得到意想不到的结果。下面将帮助你了解shell执行的次序。为了更清楚,一些关于shell关键字的内部控制命令已经得到了简化。 

  • Shell 处理过程 

1.Shell首先从命令行中找出特殊字符(元字符),在将元字符翻译成间隔符号。元字符将命令行划分成小块tokens。Shell中的元字符如下所示: 

SPACE , TAB , NEWLINE , & , ; , ( , ) ,< , > , | 

2. 程序块tokens被处理,检查看他们是否是shell中所引用到的关键字。 

3. 当程序块tokens被确定以后,shell根据aliases文件中的列表来检查命令的第一个单词。如果这个单词出现在aliases表中,执行替换操作并且处理过程回到第一步重新分割程序块tokens。 

4.Shell对~符号进行替换。 

5.Shell对所有前面带有$符号的变量进行替换。 

6.Shell将命令行中的内嵌命令表达式替换成命令;他们一般都采用$(command)标记法。 

7.Shell计算采用$(expression)标记的算术表达式。 

8.Shell将命令字符串重新划分为新的块tokens。这次划分的依据是栏位分割符号,称为IFS。缺省的IFS变量包含有:SPACE , TAB 和换行符号。 

9.Shell执行通配符* ? [ ]的替换。 

10.shell把所有從處理的結果中用到的注释删除,並且按照下面的顺序实行命令的检查: 

A. 内建的命令 

B. shell函数(由用户自己定义的) 

C. 可执行的脚本文件(需要寻找文件和PATH路径) 

11.在执行前的最后一步是初始化所有的输入输出重定向。 

12.最后,执行命令。 

最后执行的命令的形式可能与开始时敲进去的命令形式大不相同。这就是POSIX shell的强大之处:非常简短的指令可以产生不同凡响的结果。

原创粉丝点击