linux – 路径中的可执行文件,可以找到哪个,但没有完全限定路径就无法执行?

linux – 路径中的可执行文件,可以找到哪个,但没有完全限定路径就无法执行?,第1张

概述我有一个奇怪的看似 shell问题,在$PATH中有一个命令,shell(在 Linux上运行的ksh)似乎懦弱地拒绝调用.如果没有完全符合命令,我得到: # mycommand/bin/ksh: mycommand: not found [No such file or directory] 但是文件可以通过以下方式找到: # which mycommand/home/me/mydir/ 我有一个奇怪的看似 shell问题,在$PATH中有一个命令,shell(在 Linux上运行的ksh)似乎懦弱地拒绝调用.如果没有完全符合命令,我得到:
#  mycommand/bin/ksh: mycommand: not found [No such file or directory]

但是文件可以通过以下方式找到:

#  which mycommand/home/me/mydir/admbin/mycommand

我还明确地在$PATH中看到该目录:

#  echo $PATH | tr : '\n' | grep adm/home/me/mydir/admbin

该位置的exe似乎正常:

#  file /home/me/mydir/admbin/mycommand/home/me/mydir/admbin/mycommand: setuID setgID ELF 64-bit LSB executable,x86-64,version 1 (SYSV),for GNU/linux 2.6.4,dynamically linked (uses shared libs),not stripped# ls -l mycommand  -r-sr-s--- 1 me mygroup 97892 2012-04-11 18:01 mycommand

如果我使用完全限定路径显式运行它:

#  /home/me/mydir/admbin/mycommand

我看到了预期的输出.这里的东西确实令人困惑,但我不知道它会是什么?

编辑:找到类似问题:Binary won’t execute when run with a path. Eg >./program won’t work but >program works fine

我还在$PATH中测试了多个这样的命令,但只找到一个:

# for i in `echo $PATH | tr : '\n'` ; do test -e $i/mycommand && echo $i/mycommand ; done/home/me/mydir/admbin/mycommand

EDIT2:

截至今天早上,问题已经消失,我现在能够执行可执行文件.

这可以被认为是验证注销和登录的建议,但我昨晚做的没有成功.注销/登录也应该相当于运行建议的’hash -r’命令(fwiw似乎也是一个ksh内置版,而不仅仅是一个bash内置版).

回答一些答案:

>这是一个可执行文件而不是脚本(请参阅文件命令输出中的ELF参考).
>我不认为一个strace会有所帮助.这最终迫使命令执行完全限定.我想我可以在当前的shell上做一个strace附加,但是因为我再也无法重复了,所以没有必要尝试.
> $PATH中没有分号.因为我不能再责备,所以我不会用完整的$PATH来混淆这个问题.
>正如所建议的那样,尝试另一个shell(即bash)本来也是我尝试过的东西.随着问题的消失,我现在不知道这是否会有所帮助.

还有人建议我检查目录权限.这样做,对于每个目录,我看到:

# ls -ld $HOME $HOME/mydir $HOME/mydir/admbindrwxr-xr-x 10 me root    4096 2012-04-12 12:20 /home/medrwxrwsr-t 22 me mygroup 4096 2012-04-12 12:04 /home/me/mydirdrwxr-sr-x  2 me mygroup 4096 2012-04-12 12:04 /home/me/mydir/admbin

$HOME目录所有权搞砸了(不应该是root组).这可能会导致其他问题,但我不知道它会如何导致这个问题.

解决方法 您可能需要使用hash -r更新shell的$PATH项目的缓存. 总结

以上是内存溢出为你收集整理的linux – 路径中的可执行文件,可以找到哪个,但没有完全限定路径就无法执行?全部内容,希望文章能够帮你解决linux – 路径中的可执行文件,可以找到哪个,但没有完全限定路径就无法执行?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/1044493.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存