为什么Linux不在PATH环境下的所有目录中查找命令?

我首先通过以下命令从docker站点安装docker:

curl -s -O https://get.docker.com/builds/Linux/x86_64/docker-1.6.1 && chmod +x docker-1.6.1 && sudo mv docker-1.6.1 /usr/local/bin/docker 

然后我删除/usr/local/bin目录下的docker

我再次通过yum安装docker ,这次docker安装在/usr/bin目录下:

 [root@dl380gen8snbjbb ~]# ls -lt /usr/bin/docker -rwxr-xr-x 1 root root 13451927 Apr 20 13:44 /usr/bin/docker 

当我在命令中执行docker时:

 [root@dl380gen8snbjbb ~]# docker -bash: /usr/local/bin/docker: No such file or directory 

但是/usr/bin实际上是在PATH

 [root@dl380gen8snbjbb ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 

为什么系统不在/usr/bin目录下寻找docker命令?

检查以下链接: https : //unix.stackexchange.com/q/5609/55635

bash确实caching命令的完整path。 您可以使用type命令validation您尝试执行的命令:

$ type svnsync svnsync被散列(/ usr / local / bin / svnsync)

要清除整个caching:

$ hash -r

或者只有一个条目:

$ hash -d svnsync

有关其他信息,请参阅帮助哈希和男子bash。