bash не использует все каталоги из $PATH для поиска исполняемого файла

Я думал, что если вы вызовете команду в bash, все каталоги, установленные в $PATH, будут найдены для этой команды.

(работает как root)

$ clamscan ./
-bash: /usr/bin/clamscan: No such file or directory

В / usr / bin / нет clamscan, но в /usr/local/bin/ (и работает, если я оттуда его вызываю):

$ ls -hail /usr/local/bin/
62259565 drwxr-xr-x  2 root root 4.0K Jul 21 14:19 .
62259561 drwxr-xr-x 11 root root 4.0K Apr 11 19:55 ..
62260816 -rwxr-xr-x  1 root root 1.1K Jul 21 14:19 clamav-config
62260819 -rwxr-xr-x  1 root root  75K Jul 21 14:19 clambc
62260817 -rwxr-xr-x  1 root root  79K Jul 21 14:19 clamconf
62260821 -rwxr-xr-x  1 root root 141K Jul 21 14:19 clamdscan
62260823 -rwxr-xr-x  1 root root 137K Jul 21 14:19 clamdtop
62260822 -rwxr-xr-x  1 root root  95K Jul 21 14:19 clamscan
62260818 -rwxr-xr-x  1 root root 148K Jul 21 14:19 freshclam

Я никогда не менял $PATH. Директория / usr / local / bin / указана.

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Это может сработать, если я скопирую файлы из / usr / local / bin / в / usr / bin /, но мне интересно, почему bash, похоже, запрашивает только этот единственный каталог.

1 ответ

Решение

Баш хранит кеш PATH поиск. Я предполагаю, что вы удалили /usr/bin/clamscan во время жизни этого экземпляра bash, поэтому он все еще имеет присутствие этого файла в своем кэше. Использовать hash Команда для восстановления кеша: hash clamscan только для одного имени или hash -r стереть кеш и начать заново.

Другие вопросы по тегам