which -a cmd procura todos os arquivos regulares chamados cmd para os quais você tem permissão de execução nos diretórios em $path (além de aliases, funções, builtins ...).
Enquanto which cmd retorna o comando que zsh executaria ( which é embutido em zsh como em tcsh , mas diferente da maioria das outras shells).
zsh , como a maioria dos outros shells lembra os caminhos dos executáveis em uma tabela hash para não ter que procurá-los em todos os diretórios em $path cada vez que você invoca-los.
Essa tabela hash (exposta na matriz $commands associativa em zsh ) pode ser manipulada com o comando hash (comando shell POSIX padrão).
Se você executou o comando brew (ou which/type/whence brew , ou usou a conclusão de comando ou qualquer coisa que tenha preparado esse hash / cache) antes de ser adicionado a /usr/local/Cellar/zplug/HEAD-9fdb388/bin ou antes de /usr/local/Cellar/zplug/HEAD-9fdb388/bin ser adicionado a $path , zsh teria lembrado seu caminho e armazenado como $commands[brew]=/usr/local/bin/brew .
Nesse caso, você pode usar hash -r (como no shell Bourne) ou rehash (como em csh) para ter zsh esquecer os comandos lembrados (invalidar isso cache ), para que possa consultá-lo da próxima vez e encontrá-lo na nova localização.