Shell Bash:如何搜索路径中的可执行文件?

Shell Bash:如何搜索路径中的可执行文件?,shell,path,Shell,Path,我在/usr/bin中有一个“gtags”可执行文件,但这是一个旧文件。 然后我编译了一个新的gtags,并将其“makeinstall”放在/usr/local/bin中。 然后我把那个放进/usr/bin的箱子里。但当我在shell中键入“gtags”时,它告诉我“/usr/bin/gtags”找不到。但是我在/usr/local/bin中有一个“gtags”,并且/usr/local/bin在路径中。另外,在我的路径中,在/usr/bin之前搜索/usr/local/bin,为什么shel

我在/usr/bin中有一个“gtags”可执行文件,但这是一个旧文件。 然后我编译了一个新的gtags,并将其“makeinstall”放在/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中选中了“gtags”?

使用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”,它将报告它运行了哪些命令、运行了多少次以及从何处运行

检查可执行文件的权限。同时验证
的操作,该
@Abhijit权限正常,755。哪个gtags显示“/usr/local/bin/gtags”谢谢!这真的很有用!