1.Bash解析:
如图是我见过最详细的Bash解析图:
Bash首先会对输入的字符串进行语法分析,将命令分割为token,其中token我们可以给他理解成不能再进行分割的部分(比如:mkdir ls 等),然后对第一个token进行别名检查,是别名则展开,并且对展开的字符串继续进行分割,然后进行一系列展开操作,最后命令进行查找,判断是否为函数,内置命令还是可执行文件,并在特定的环境中执行他们。
其中eval的命令相当于执行两次,会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。
例如:
[root@zsw lianxi2]# vim eval.sh