linux – 路径中的可执行文件,可以找到哪个,但没有完全限定路径
我有一个奇怪的看似
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参考). 还有人建议我检查目录权限.这样做,对于每个目录,我看到: # ls -ld $HOME $HOME/mydir $HOME/mydir/admbin drwxr-xr-x 10 me root 4096 2012-04-12 12:20 /home/me drwxrwsr-t 22 me mygroup 4096 2012-04-12 12:04 /home/me/mydir drwxr-sr-x 2 me mygroup 4096 2012-04-12 12:04 /home/me/mydir/admbin $HOME目录所有权搞砸了(不应该是root组).这可能会导致其他问题,但我不知道它会如何导致这个问题. 解决方法
您可能需要使用hash -r更新shell的$PATH项目的缓存.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |