У меня странная проблема с оболочкой, с командой в $ PATH, что оболочка (ksh, работающая в Linux) трусливо отказывается вызываться. Без полной квалификации команды я получаю:
# 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
Я вижу ожидаемый результат. Что-то определенно смущает оболочку здесь, но я в недоумении, что это может быть?
РЕДАКТИРОВАТЬ: найти что-то похожее на вопрос: двоичный файл не будет выполняться при запуске с путем. Например> ./ программа не будет работать, но> программа работает нормально
Я также протестировал более одной такой команды в моем $ PATH, но нашел только одну:
# for i in `echo $PATH | tr : '\n'` ; do test -e $i/mycommand && echo $i/mycommand ; done
/home/me/mydir/admbin/mycommand
EDIT2:
По состоянию на это утро проблема исчезла , и теперь я могу выполнить исполняемый файл.
Это можно рассматривать как подтверждение предложения выйти из системы и войти в систему, но я сделал это прошлой ночью безуспешно. Этот выход из системы / вход в систему должен был также выполнить команду «hash -r», которая была предложена (которая, по-видимому, также является встроенной в ksh, а не просто встроенной в bash).
В ответ на некоторые ответы:
Это исполняемый файл, а не скрипт (см. Ссылку на ELF в выходных данных команды file).
Я не думаю, что это помогло бы. Это приводит к принудительному выполнению команды. Я полагаю, что я мог бы сделать привязку 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 испорчено (не должно быть корневой группой). Это может вызвать другие проблемы, но я не понимаю, как это вызвало бы это.