Tengo un extraño problema de shell aparente, con un comando en el $ PATH que el shell (ksh, que se ejecuta en Linux) parece negarse cobardemente a invocar. Sin calificar completamente el comando, obtengo:
# mycommand
/bin/ksh: mycommand: not found [No such file or directory]
pero se puede encontrar el archivo mediante el cual:
# which mycommand
/home/me/mydir/admbin/mycommand
También veo explícitamente ese directorio en $ PATH:
# echo $PATH | tr : '\n' | grep adm
/home/me/mydir/admbin
El exe en esa ubicación 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
y si lo ejecuto explícitamente usando una ruta totalmente calificada:
# /home/me/mydir/admbin/mycommand
Veo el resultado esperado. Algo definitivamente está confundiendo el caparazón aquí, pero no sé qué podría ser.
EDITAR: encontrar lo que parecía una pregunta similar: el binario no se ejecutará cuando se ejecute con una ruta. Por ejemplo,> ./ programa no funcionará pero> programa funciona bien
También probé más de uno de esos comandos en mi $ PATH, pero encuentro solo uno:
# for i in `echo $PATH | tr : '\n'` ; do test -e $i/mycommand && echo $i/mycommand ; done
/home/me/mydir/admbin/mycommand
EDIT2:
A partir de esta mañana, el problema ha desaparecido y ahora puedo ejecutar el ejecutable.
Podría pensarse que valida la sugerencia de cerrar sesión e iniciar sesión, pero lo hice anoche sin éxito. Ese cierre de sesión / inicio de sesión también debería haber hecho el equivalente de ejecutar el comando 'hash -r' que se sugirió (que fwiw también parece ser un ksh incorporado, y no solo un bash incorporado).
En respuesta a algunas de las respuestas:
Este es un ejecutable, no un script (consulte la referencia ELF en la salida del comando de archivo).
No creo que un strace hubiera ayudado. Eso termina obligando al comando a ejecutar totalmente calificado. Supongo que podría haber hecho un strace adjunto en el shell actual, pero como ya no puedo reprochar, no tiene sentido intentarlo.
no había punto y coma en el $ PATH. Como ya no puedo reprobar, no voy a abarrotar esta pregunta con el $ PATH completo.
probar otro shell (es decir, bash) habría sido algo que también hubiera intentado, como se sugirió. Desaparecido el problema, ahora no sabré si eso habría ayudado.
También me sugirieron que revisara los permisos del directorio. Al hacerlo, para cada uno de los directorios hasta este veo:
# 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
La propiedad del directorio $ HOME está en mal estado (no debería ser un grupo raíz). Eso podría causar otros problemas, pero no veo cómo habría causado este.