У мене є химерна, здавалося б, проблема з оболонкою, з командою в $ 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
Я бачу очікуваний вихід. Щось тут напевно плутає оболонку, але я втрачаю, що це може бути?
EDIT: пошук того, що було схоже на запитання: Бінарний файл не буде виконуватися під час запуску із контуром. Наприклад, програма ./ не працюватиме, але програма працює нормально
Я також перевірив більше ніж одну таку команду в моєму $ 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" (яка fwiw також виглядає як вбудований ksh, а не просто вбудований bash).
У відповідь на деякі відповіді:
Це виконуваний не сценарій (див. Посилання ELF у вихідному файлі команди).
Я не думаю, що ця допомога допомогла б. Це в кінцевому підсумку змушує команду виконувати повністю кваліфіковано. Я припускаю, що я міг би виконати штрих приєднання до поточної оболонки, але оскільки я вже не можу докоряти, немає сенсу намагатися це робити.
в $ PATH не було крапки з комою. Оскільки я більше не можу дорікати, я не буду перебирати це питання повною мірою $ PATH.
спробувати іншу оболонку (тобто баш) було б чимось, що я б також спробував, як було запропоновано. З усуненою проблемою я зараз не знаю, чи допомогло б це.
Також мені було запропоновано перевірити дозволи довідників. Роблячи це, я бачу для кожного з каталогів до цього.
# 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 зіпсовано (не повинно бути кореневою групою). Це може спричинити інші проблеми, але я не бачу, як це спричинило б це.