¿Por qué Ubuntu no comprueba el directorio correcto en la variable $PATH?

¿Por qué Ubuntu no comprueba el directorio correcto en la variable $PATH?

Estoy intentando ejecutar un 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

Si el programa redis-cliexiste en el directorio /usr/local/biny ese directorio está en mi variable de ruta, ¿por qué aparece el siguiente error?

$ 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

Respuesta1

Es probable que haya un redis-cli en /usr/bin/redis-cli que ahora se ha eliminado.

Bash mantiene un hash interno de ejecutables en su ruta que no ha sido actualizado. Si vuelve a encontrar este problema, repítalo y funcionará.

hash redis-cli

Respuesta2

Parece que tienes un alias o una función de shell con ese nombre; Creo que ambos pasarían por alto su $PATH y estarían ocultos de "cuál".

Para comprobar un alias:

alias redis-cli

Para eliminar un alias si encuentra uno:

unalias redis-cli

Para comprobar una función:

declare -f redis-cli

Para eliminar una función si encuentra una:

unset -f redis-cli

Si uno de estos resulta ser el problema, entonces esos comandos solo ayudarán hasta el final de esa sesión de terminal, y tendrás que volver a ejecutarlos la próxima vez. Querrá verificar su .bashrc y .profile para ver si hay algún comando malicioso que mencione redis-cli. Si eso no funciona, es posible que estén en algún lugar de /etc.

grep redis-cli /etc

información relacionada