我在/usr/bin中有一个"gtags“可执行文件,但这是一个较旧的文件。然后我编译了一个新的gtag,"make install“将它放在/usr/local/bin中。然后我删除了/usr/bin中的那个。但是当我在shell中输入"gtags“时,它告诉我找不到"/usr/bin/gtags”。但是我在/usr/local/bin中有一个"gtags“,而/usr/local/bin在路径中。另外,在我的路径中,在/usr/bin之前搜索/usr/local/bin,为什么shell只在/usr/bin中检查“gtag”?
发布于 2012-04-19 21:35:53
使用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“,它将报告运行的命令、运行次数以及运行位置。
https://stackoverflow.com/questions/10227319
复制相似问题