Linux命令中分为内部命令和外部命令,其中内部命令在系统启动中加载到内存中,可以供shell解释器直接使用,内部命令通常都是功能简单的命令。而外部命令通常保存在系统的磁盘中,只有当使用外部命令时才会去磁盘中加载外部命令。
通常,使用type命令来判断一个命令是属于内部命令还是外部命令,基本命令格式如下:
type [command]
当提示“XXX is a shell builtin”时,说明此命令为一个内建命令。
[root@centos7 ~]#type echo
echo is a shell builtin
当提示“XXX is /usr/bin/who”时,说明此命令为一个内建命令,其中/usr/bin/who是命令所在文件夹位置。
[root@centos7 ~]#type who
who is /usr/bin/who
外部命令执行后,会将命令所在文件位置存放至缓存中,当再次使用缓存过的外部命令时,可以通过内存直接找到命令位置运行,以重复提高使用同一外部命令的效率。可以使用:
【hash】 命令查看当前缓存的外部命令。
[root@centos7 ~]#hash
hits command
2 /usr/bin/stat
2 /usr/bin/man
3 /usr/bin/ls
1 /usr/bin/clear
可以通过 hash -r : 清除所有hash缓存
或
hash -r [command]:清除指定命令的hash缓存
优先级从左往右从高到低为:
别名--->内部命令--->缓存中的外部命令--->外部命令
原文:https://www.cnblogs.com/thomascyq/p/11574196.html