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

3

Estou tentando executar um programa redis-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-cli existir no diretório /usr/local/bin e esse diretório estiver 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
    
por user784637 24.03.2013 / 20:57

2 respostas

2

Há chances de haver um redis-cli em / usr / bin / redis-cli que agora foi excluído.

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

hash redis-cli
    
por bluesman 04.07.2014 / 16:42
0

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

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 de terminal e você terá que executá-los novamente na próxima vez. Você vai querer verificar o seu .bashrc e .profile para ver se há algum comando falso que mencione o redis-cli. Se isso não funcionar, eles podem estar em algum lugar em / etc.

grep redis-cli /etc
    
por Paul 22.05.2013 / 03:52