シェル(Linuxで実行されているksh)が起動をto病に拒否しているように見える$ PATHにコマンドがあるという奇妙なシェルの問題があります。コマンドを完全に修飾せずに、私は得る:
# 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
予想される出力が表示されます。ここで何かが間違いなく混乱しているが、私はそれがどうなるか迷っていますか?
編集:同様の質問のように見えたものを見つける:パスで実行するとバイナリは実行されません。たとえば、> ./ programは動作しませんが、> programは正常に動作します
また、$ PATHでこのようなコマンドを複数テストしましたが、1つしか見つかりませんでした。
# 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は、単なるbashビルトインではなく、kshビルトインでもあるように見えます)。
いくつかの答えに応えて:
これはスクリプトではなく実行可能ファイルです(ファイルコマンド出力のELFリファレンスを参照)。
痕跡が助けになるとは思わない。その結果、コマンドは完全修飾された状態で実行されます。現在のシェルでstrace接続を行うことができたと思いますが、もう再現できないため、それを試す意味はありません。
$ PATHにセミコロンはありません。私はもはや再現できないので、完全な$ PATHでこの質問を混乱させません。
提案されたように、別のシェル(つまりbash)を試すことも、私が試したものでした。問題がなくなったので、それが助けになるかどうかはわかりません。
また、ディレクトリのアクセス許可を確認することが提案されました。これを行うと、これまでの各ディレクトリについて、私は見る:
# 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ディレクトリの所有権が台無しになっています(ルートグループであってはなりません)。それは他の問題を引き起こす可能性がありますが、私はそれがこの問題をどのように引き起こしたかわかりません。