bash não usa todos os diretórios de $ PATH para procurar por executável

1

Eu pensei, se você chamar um comando no bash, todos os diretórios configurados em $ PATH seriam procurados por este comando.

(executando como root)

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

Não há clamscan em / usr / bin /, mas em / usr / local / bin / (e funciona se eu chamá-lo de lá):

$ 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

Eu nunca mudei o $ PATH. O diretório / usr / local / bin / é indicado.

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

Poderia funcionar se eu copiar os arquivos de / usr / local / bin / para / usr / bin /, mas me pergunto por que o bash parece perguntar apenas a este diretório único.

    
por 32bitfloat 21.07.2012 / 19:41

1 resposta

2

O Bash mantém um cache de PATH de pesquisas. Eu suponho que você removeu /usr/bin/clamscan durante o tempo de vida desta instância do bash, por isso ainda tem a presença desse arquivo em seu cache. Use o comando hash para reconstruir o cache: hash clamscan para apenas um nome ou hash -r para apagar o cache e começar de novo.

    
por Gilles 21.07.2012 / 20:10