J'ai un problème de shell qui semble bizarre, avec une commande dans $ PATH que le shell (ksh, fonctionnant sous Linux) semble lâchement refuser d'invoquer. Sans qualifier complètement la commande, j'obtiens:
# mycommand
/bin/ksh: mycommand: not found [No such file or directory]
mais le fichier peut être trouvé par lequel:
# which mycommand
/home/me/mydir/admbin/mycommand
Je vois aussi explicitement ce répertoire dans $ PATH:
# echo $PATH | tr : '\n' | grep adm
/home/me/mydir/admbin
L'exe à cet endroit semble 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
et si je l'exécute explicitement en utilisant un chemin d'accès complet:
# /home/me/mydir/admbin/mycommand
Je vois la sortie attendue. Quelque chose confond vraiment la coquille ici, mais je ne sais pas ce que cela pourrait être?
EDIT: trouver ce qui ressemblait à une question similaire: le binaire ne s'exécutera pas lorsqu'il est exécuté avec un chemin. Par exemple> ./ le programme ne fonctionnera pas mais> le programme fonctionne bien
J'ai également testé plusieurs commandes de ce type dans mon $ PATH, mais je n'en trouve qu'une:
# for i in `echo $PATH | tr : '\n'` ; do test -e $i/mycommand && echo $i/mycommand ; done
/home/me/mydir/admbin/mycommand
EDIT2:
Depuis ce matin, le problème a disparu et je suis maintenant en mesure d'exécuter l'exécutable.
Cela pourrait être considéré comme valider la suggestion de se déconnecter et de se connecter, mais je l'avais fait hier soir sans succès. Cette déconnexion / connexion aurait également dû faire l'équivalent de l'exécution de la commande 'hash -r' qui a été suggérée (qui fwiw semble également être un module intégré ksh, et pas seulement un module intégré bash).
En réponse à certaines des réponses:
Il s'agit d'un exécutable et non d'un script (voir la référence ELF dans la sortie de la commande file).
Je ne pense pas qu'une strace aurait aidé. Cela finit par forcer la commande à s'exécuter complètement. Je suppose que j'aurais pu faire une attache strace sur le shell actuel, mais comme je ne peux plus faire de repro, il n'y a pas lieu d'essayer.
il n'y avait pas de point-virgule dans le $ PATH. Comme je ne peux plus reproduire, je ne vais pas encombrer cette question avec le $ PATH complet.
essayer un autre shell (c'est-à-dire bash) aurait été quelque chose que j'aurais aussi essayé, comme cela a été suggéré. Le problème étant résolu, je ne saurai maintenant si cela aurait aidé.
Il m'a également été suggéré de vérifier les autorisations du répertoire. Ce faisant, pour chacun des répertoires jusqu'à celui-ci, je vois:
# 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 propriété du répertoire $ HOME est foirée (ne devrait pas être le groupe racine). Cela pourrait causer d'autres problèmes, mais je ne vois pas comment cela aurait pu causer celui-ci.