Eu tenho um problema aparente bizarro de shell, com um comando no $ PATH que o shell (ksh, executando no Linux) parece covardemente se recusar a invocar. Sem qualificar totalmente o comando, recebo:
# mycommand
/bin/ksh: mycommand: not found [No such file or directory]
mas o arquivo pode ser encontrado pelo qual:
# which mycommand
/home/me/mydir/admbin/mycommand
Também vejo explicitamente esse diretório em $ PATH:
# echo $PATH | tr : '\n' | grep adm
/home/me/mydir/admbin
O exe nesse local parece normal:
# 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
e se eu executá-lo explicitamente usando um caminho completo:
# /home/me/mydir/admbin/mycommand
Eu vejo a saída esperada. Algo está definitivamente confundindo o shell aqui, mas estou sem saber o que poderia ser?
EDIT: encontrando o que parecia ser uma pergunta semelhante: o binário não será executado quando executado com um caminho. Por exemplo,> ./ programa não funcionará, mas> programa funciona bem
Também testei para mais de um desses comandos no meu $ PATH, mas encontrei apenas um:
# for i in `echo $PATH | tr : '\n'` ; do test -e $i/mycommand && echo $i/mycommand ; done
/home/me/mydir/admbin/mycommand
EDIT2:
A partir desta manhã, o problema desapareceu e agora eu sou capaz de executar o executável.
Isso poderia ser considerado uma validação da sugestão de logout e login, mas eu fiz isso ontem à noite sem sucesso. Esse logout / login também deveria ter o equivalente à execução do comando 'hash -r' sugerido (que também parece ser um built-in do ksh, e não apenas um bash).
Em resposta a algumas das respostas:
Este é um executável, não um script (consulte a referência ELF na saída do comando file).
Eu não acho que um traço teria ajudado. Isso acaba forçando o comando a executar totalmente qualificado. Suponho que eu poderia ter feito uma ligação strace no shell atual, mas como não consigo mais me reproduzir, não há sentido em tentar isso.
não havia ponto e vírgula no $ PATH. Como não posso mais me reproduzir, não vou desordenar esta questão com o $ PATH completo.
tentar outro shell (ou seja, bash) seria algo que eu também teria tentado, como foi sugerido. Sem o problema, agora não saberei se isso teria ajudado.
Também me foi sugerido que estava verificando as permissões do diretório. Fazendo isso, para cada um dos diretórios até este, vejo:
# 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
A propriedade do diretório $ HOME está desarrumada (não deve ser o grupo raiz). Isso pode causar outros problemas, mas não vejo como isso teria causado esse problema.