Ho un bizzarro problema di shell apparente, con un comando in $ PATH che la shell (ksh, in esecuzione su Linux) sembra rifiutare codardamente di invocare. Senza qualificare completamente il comando, ottengo:
# mycommand
/bin/ksh: mycommand: not found [No such file or directory]
ma il file può essere trovato con il quale:
# which mycommand
/home/me/mydir/admbin/mycommand
Vedo anche esplicitamente quella directory in $ PATH:
# echo $PATH | tr : '\n' | grep adm
/home/me/mydir/admbin
L'ex in quella posizione sembra normale:
# 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 lo eseguo esplicitamente usando un percorso completo:
# /home/me/mydir/admbin/mycommand
Vedo l'output previsto. Qualcosa sta sicuramente confondendo il guscio qui, ma sono in perdita quale potrebbe essere?
EDIT: trovare quella che sembrava una domanda simile: il binario non verrà eseguito quando eseguito con un percorso. Ad esempio, il programma> ./ non funzionerà ma> il programma funziona correttamente
Ho anche provato più di uno di questi comandi nel mio $ PATH, ma ne trovo 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 partire da questa mattina, il problema è svanito e ora sono in grado di eseguire l'eseguibile.
Questo potrebbe essere considerato come la convalida del suggerimento di disconnettersi e accedere, ma l'ho fatto ieri sera senza successo. Quel logout / login avrebbe dovuto fare anche l'equivalente dell'esecuzione del comando 'hash -r' che era stato suggerito (che fwiw sembra anche essere un built-in ksh, e non solo un built-in bash).
In risposta ad alcune delle risposte:
Questo è un eseguibile non uno script (vedere il riferimento ELF nell'output del comando file).
Non penso che una striscia avrebbe aiutato. Ciò finisce per forzare l'esecuzione del comando in modo completo. Suppongo che avrei potuto fare un attaccamento di strace sulla shell corrente, ma dal momento che non riesco più a riproporre non ha senso provarlo.
non c'erano punti e virgola nel $ PATH. Dal momento che non riesco più a riproporre, non ingombrerò questa domanda con l'intero $ PATH.
provare un'altra shell (cioè bash) sarebbe stato qualcosa che avrei anche provato, come suggerito. Con il problema risolto, ora non saprò se ciò avrebbe aiutato.
Mi è stato anche suggerito di controllare le autorizzazioni della directory. In questo modo, per ciascuna delle directory fino a questa vedo:
# 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 proprietà della directory $ HOME è incasinata (non dovrebbe essere un gruppo root). Ciò potrebbe causare altri problemi, ma non vedo come avrebbe causato questo.