执行命令
-
输入命令后回车
申请shell(命令解释器)程序找到输入的命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来。
shell有好多种,可以自己找找具体区别,反正都是用的bash,通过cat命令可以查看当前系统有哪些shell类型。
当让也可以查看自己正在使用那种shell类型,简单就用echo ${SHELL}
当让也可以查看自己正在使用那种shell类型,简单就用echo ${SHELL}
-
在shell中可执行的命令有两类
内部命令:由shell自带的,而且通过某命令形式提供 help 可以查看内部命令列表 enable cmd 启用内部命令 enable -n cmd 禁用内部命令(但是,例如有时候你发现你禁用了pwd命令,但是还是能使用pwd查看路径,这其实是因为你用的pwd不是内部命令,而是外部命令。再往下看你就懂了) enable -n 查看所有禁用的内部命令 外部命令:在文件系统路径下有对应的可执行程序文件 查看命令路径可以用whereis commad
-
区别指令的命令是内部命令还是外部命令
type command
builtin是内置命令的意思。 -
执行指令时shell怎么找命令所对应的可执行程序或者代码呢?
以bash为例
解释器优先从bash自带的命令也就是内部命令(在内存中)中找,找到了自然就直接执行了,没找到呢?就在外部命令中找,也就是磁盘中存在的可执行程序或代码,这里就存在一个优先级,我们知道内存中是有一块Cache的,这里面有从硬盘中缓存过来的数据,我们使用过的命令自然也在其中,优先从这里面找,找不到也不是就放弃了,直接去硬盘里面找,此时就通过PATH环境变量来找,PATH里存放的就是路径可以看一下
从第一个路径找,一个又一个直到最后一个路径,如果找不到,那么就会停止,然后输出错误信息。
想要不报错应该很简单了,把命令放到PATH内容里有的路径里,或者在PATH里新添加命令对应文件的路径。是不是很简单。