linux命令执行遵循环境变量PATH中的路径,但是有时我们会发现这种现象:

# mv /sbin/ls /bin/[root@xx~]# ls /tmp/-bash: /sbin/ls: No such file or directory

/sbin和/bin同样是PATH环境变量中的搜索路径,但是移动之后却发现不了命令,这是因为,命令在上次执行之后以key-value形式缓存:

[root@xx~]# hashhits	command   2	/bin/mv   1	/bin/cp   2	/sbin/ls                    #缓存的命令执行路径

那如果让次命令执行成功呢?

[root@xx~]#hash -d ls   #清除命令缓存[root@xx~]# ls /tmp/[root@xx~]# echo $?0

如果清除全部命令缓存,请用命令:

[root@xx~]#hash -r