
Я пытаюсь запустить программу.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
Если программа redis-cli
существует в каталоге /usr/local/bin
, и этот каталог указан в моей переменной path, почему я получаю следующую ошибку?
$ redis-cli
-bash: /usr/bin/redis-cli: No such file or directory
РЕДАКТИРОВАТЬ
$ /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
решение1
Скорее всего, раньше в /usr/bin/redis-cli был redis-cli, который теперь удален.
Bash поддерживает внутренний хэш исполняемых файлов на вашем пути, который не был обновлен. Если вы снова столкнетесь с этой проблемой, перехэшируйте его, и это заработает.
hash redis-cli
решение2
Похоже, у вас есть псевдоним или функция оболочки с таким именем; я полагаю, что оба варианта обойдут ваш $PATH и будут скрыты от «which».
Чтобы проверить наличие псевдонима:
alias redis-cli
Чтобы удалить псевдоним, если вы его нашли:
unalias redis-cli
Чтобы проверить функцию:
declare -f redis-cli
Чтобы удалить функцию, если вы ее нашли:
unset -f redis-cli
Если одна из них действительно окажется проблемой, то эти команды помогут только до конца сеанса терминала, и вам придется снова запустить их в следующий раз. Вам нужно будет проверить ваши .bashrc и .profile, чтобы увидеть, нет ли там каких-либо мошеннических команд, которые упоминают redis-cli. Если это не сработает, они могут быть где-то в /etc.
grep redis-cli /etc