Я пытаюсь запустить программу 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
, и этот каталог находится в моей переменной пути, почему я получаю следующая ошибка?
$ 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
Скорее всего, это был redis-cli в / usr / bin / redis-cli, который сейчас удален.
Bash поддерживает внутренний хэш исполняемых файлов на вашем пути, который не был обновлен. Если вы снова столкнетесь с этой проблемой, перефразируйте ее, и она будет работать.
hash redis-cli
Отчасти похоже, что у Вас есть псевдоним или функция оболочки с тем именем; я полагаю, что оба из тех обошли бы Ваш $PATH и скрыты от 'который'.
Проверять на псевдоним:
alias redis-cli
Для удаления псевдонима, если Вы находите тот:
unalias redis-cli
Проверять на функцию:
declare -f redis-cli
Для удаления функции, если Вы находите тот:
unset -f redis-cli
Если один из них действительно окажется проблемой, то те команды только помогут до конца того терминального сеанса, и необходимо было бы повторно выполнить их снова в следующий раз. Вы захотите проверить свой .bashrc и .profile, чтобы видеть, существуют ли какие-либо команды жулика там то упоминание redis-cli. Если это не работает, они могут быть где-нибудь в / и т.д.
grep redis-cli /etc