Это не вина Homebrew: это Bash '.
Когда вы набираете protoc
, Bash ищет исполняемый файл в вашем PATH
.В вашем случае это /usr/local/opt/protobuf@3.1/bin/protoc
.Тем не менее, он делает это только в первый раз: он кэширует свои результаты для сеанса.
Вы удалили protobuf, и поэтому Homebrew удалил файл /usr/local/opt/protobuf@3.1/bin/protoc
;но вы не очистили кэш Bash, поэтому он все еще думает, что этот файл существует.
Решение состоит в том, чтобы либо запустить новый сеанс оболочки, либо заставить Bash очистить кэш с помощью hash -r
.
Иллюстрация:
$ touch /tmp/hi
$ chmod u+x /tmp/hi
$ export PATH="/tmp:$PATH"
$ which hi
/tmp/hi
$ hi # <-- executes /tmp/hi and cache hi=/tmp/hi
$ rm /tmp/hi
$ hi # <-- still executes /tmp/hi because of the cache
bash: /tmp/hi: No such file or directory
$ hash -r # clear the cache
$ hi
hi: command not found