当我们输入 ./code -a 去执行这段代码时,如下图,bash将指令解析过后,会一一放入到命令行参数表当中。图中的 -a -b -c 是为了用户能够通过自定义设置,来实现自己想要完成的目标。
留一个疑问:为什么code -a 不能够直接执行?而 ls -l 能够直接执行? 带着上述疑问我们来思考一下:
当用户输入对应指令时,bash会将指令一一解析,放入到如下图的命令行参数表当中,但是别忘了先前我们提到的:用户登陆时,bash就会自动生成一个环境变量表!bash在将指令放入到命令行参数表时同时会在环境变量表中去查询ls指令,对应的查找方法是,将 PATH 环境变量中的路径参数,插入到 ls 前面,即在PATH路径下去寻找是否存在 ls 指令,事实是:PATH路径中当然存在ls,于是乎bash找到了ls指令,然后成功实现指令,而其中 -l 又是老祖宗想要实现的自定义目标,就正如我们上面代码中的 -a -b -c。