首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash没有找到一个程序,即使它在我的路上

Bash没有找到一个程序,即使它在我的路上
EN

Unix & Linux用户
提问于 2013-07-14 16:03:22
回答 2查看 22.3K关注 0票数 31

我有个程序在我的路上。程序在使用指定的完整路径执行时运行。但是,当我只使用它的名字运行它时,就找不到它了。

基本上,我想了解下面的输出是如何实现的,以及如何修复它,这样就可以在没有指定完整路径的情况下找到我的程序:

代码语言:javascript
复制
root:/usr/local/bin# ./siege
****************************************************
siege: could not open /usr/local/bin/etc/siegerc
run 'siege.config' to generate a new .siegerc file
****************************************************
root:/usr/local/bin# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory
root:/usr/local/bin# wtf!?!?

我在Ubuntu12.04上使用bash。另外,请注意围城的警告输出与这个问题无关,因为我只对是否可以找到和调用程序感兴趣。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2013-07-14 16:09:44

注意这里的输出:

代码语言:javascript
复制
root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory

Bash维护路径中以前找到的可执行文件的内部哈希。在这种情况下,它提供的详细信息是,曾经有一个可执行文件在/usr/bin/密封圈上执行,并重用该路径以避免再次搜索。您需要告诉bash手动重新散列围城的路径,如下所示:

代码语言:javascript
复制
hash siege

您还可以清除所有散列位置:

代码语言:javascript
复制
hash -r
票数 48
EN

Unix & Linux用户

发布于 2016-02-29 17:40:39

造成此问题的另一个原因可能是可执行文件本身的路径位于路径上,而不是可执行文件的包含目录。

所以不要把

代码语言:javascript
复制
/home/myDir/theExecutable

在这条路上,只需加上这个

代码语言:javascript
复制
/home/myDir
票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/82991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档