
Ich versuche, ein Programm auszuführenredis-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
Wenn das Programm redis-cli
im Verzeichnis vorhanden ist /usr/local/bin
und sich dieses Verzeichnis in meiner Pfadvariable befindet, warum erhalte ich dann die folgende Fehlermeldung?
$ redis-cli
-bash: /usr/bin/redis-cli: No such file or directory
BEARBEITEN
$ /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
Antwort1
Es besteht die Möglichkeit, dass sich in /usr/bin/redis-cli früher ein Redis-CLI befand, das jetzt gelöscht wurde.
Bash verwaltet einen internen Hash der ausführbaren Dateien auf Ihrem Pfad, der nicht aktualisiert wurde. Wenn dieses Problem erneut auftritt, hashen Sie es erneut und es wird funktionieren.
hash redis-cli
Antwort2
Es sieht so aus, als hätten Sie einen Alias oder eine Shell-Funktion mit diesem Namen. Ich glaube, beide würden Ihren $PATH umgehen und vor „which“ verborgen sein.
So suchen Sie nach einem Alias:
alias redis-cli
So löschen Sie einen Alias, wenn Sie einen finden:
unalias redis-cli
So prüfen Sie, ob eine Funktion vorliegt:
declare -f redis-cli
So löschen Sie eine Funktion, wenn Sie eine finden:
unset -f redis-cli
Wenn sich herausstellt, dass einer dieser Befehle das Problem ist, helfen diese Befehle nur bis zum Ende dieser Terminalsitzung und Sie müssen sie beim nächsten Mal erneut ausführen. Sie sollten Ihre .bashrc- und .profile-Dateien überprüfen, um festzustellen, ob dort irgendwelche fehlerhaften Befehle enthalten sind, die redis-cli erwähnen. Wenn das nicht funktioniert, befinden sie sich möglicherweise irgendwo in /etc.
grep redis-cli /etc