Por que o Ubuntu não está verificando o diretório correto na variável $ PATH?

Por que o Ubuntu não está verificando o diretório correto na variável $ PATH?

Estou tentando executar um programaredis-cli

$ ls -lh /usr/local/bin/ | grep redis
-rwxr-xr-x 1 root root 4.2M Mar 24 19:49 redis-cli
-rwxr-xr-x 1 root root 5.6M Mar 24 19:49 redis-server

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

Se o programa redis-cliexiste no diretório /usr/local/bine esse diretório está na minha variável de caminho, por que recebo o seguinte erro?

$ redis-cli
-bash: /usr/bin/redis-cli: No such file or directory

EDITAR

$ /usr/local/bin/redis-cli
redis 127.0.0.1:6379>

$ redis-cli
-bash: /usr/bin/redis-cli: No such file or directory

$ file /usr/local/bin/redis-cli
/usr/local/bin/redis-cli: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x3715af7983c534d902d8dc627f9b0f1b4c8b8e80, not stripped

Responder1

Provavelmente havia um redis-cli em /usr/bin/redis-cli que agora foi excluído.

Bash mantém um hash interno de executáveis ​​em seu caminho que não foi atualizado. Se você encontrar esse problema novamente, refaça-o e ele funcionará.

hash redis-cli

Responder2

Parece que você tem um alias ou uma função shell com esse nome; Acredito que ambos ignorariam seu $PATH e ficariam ocultos de 'qual'.

Para verificar um alias:

alias redis-cli

Para excluir um alias se você encontrar um:

unalias redis-cli

Para verificar uma função:

declare -f redis-cli

Para excluir uma função se você encontrar uma:

unset -f redis-cli

Se um deles for o problema, esses comandos só ajudarão até o final da sessão do terminal e você terá que executá-los novamente na próxima vez. Você vai querer verificar seu .bashrc e .profile para ver se há algum comando não autorizado que mencione redis-cli. Se isso não funcionar, eles podem estar em algum lugar em/etc.

grep redis-cli /etc

informação relacionada