2012-04-19 94 views
1

我在/ 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”?Bash:如何搜索路径中的可执行文件?

+0

检查可执行文件的权限。另外验证'哪个' – Abhijit 2012-04-19 11:48:37

+0

@Abhijit权限是好的,755.哪个gtags显示“/ usr/local/bin/gtags” – jiluo 2012-04-19 12:16:21

回答

3

使用bash的内置命令hash

[[email protected] ~]# touch /bin/test.sh 
[[email protected] ~]# chmod 755 /bin/test.sh 
[[email protected] ~]# test.sh 
[[email protected] ~]# mv /bin/test.sh /usr/local/bin/ 
[[email protected] ~]# test.sh 
-bash: /bin/test.sh: No such file or directory 
[[email protected] ~]# hash test.sh 
[[email protected] ~]# test.sh 

出现这种情况的原因是bash的“缓存”,其中二是在$ PATH所以也没有那么每次要时间来找到它运行。这是一个表现的事情。如果你运行没有参数的“hash”,它会报告它运行的是哪个命令,有多少次,以及它从哪里运行。

+0

谢谢!这真的很有用! – jiluo 2012-04-21 03:42:00

相关问题