我在/ usr / bin中有一个“gtags”可执行文件,但这是一个较旧的。 然后我编译了一个新的gtags和“make install”将它放在/ usr / local / bin中。 然后我删除了/ usr / bin中的那个。但是当我在shell中键入“gtags”时,它告诉我“/ usr / bin / gtags”找不到。但是我在/ usr / local / bin中有一个“gtags”,而/ usr / local / bin在PATH中。另外,在我的PATH中,在/ usr / bin之前搜索/ usr / local / bin,为什么shell只检查/ usr / bin中的“gtags”?
答案 0 :(得分:3)
使用bash内置命令hash
:
[root@localhost ~]# touch /bin/test.sh
[root@localhost ~]# chmod 755 /bin/test.sh
[root@localhost ~]# test.sh
[root@localhost ~]# mv /bin/test.sh /usr/local/bin/
[root@localhost ~]# test.sh
-bash: /bin/test.sh: No such file or directory
[root@localhost ~]# hash test.sh
[root@localhost ~]# test.sh
这种情况发生的原因是bash“缓存”,其中二进制文件位于$ PATH中,因此每次运行它时都不必查找它。这是表演的事情。如果你运行没有参数的“hash”,它将报告它运行的命令,运行的次数和运行的位置。