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