执行顺序和eval
1、将命令切割成token ,是以固定的一支烟meta字符分割的,有空格、制表符、换行符、;、(,)、<、>、| 与& 。token 的种类暴扣单词,关键字、输出入重定向、以及分号
2、检查每个命令的第一个token,看看是否他是不带引号或者反斜杠的关键字,如果他是一个开发的关键字,则这个命令其实是一个复合命令
3、将每个命令的第一个单词与别名列表进行对照检查,如果匹配,它代替别的定义;
4、如果波浪号()字符出现在单词的开头处,则将波浪号替换成用户的根目录,将user 替换成user的根目录
5、将任何开头为 $的赐福的表打死,执行参数提花
6、将任何形式为 $(String)或者String的表达式,,执行命令替换
7、执行形式 $ ((String))的算数表达式、
SubShell
内建命令