Tengo un comportamiento extraño con zsh (5.4.2_1 instalado con homebrew) en osx que no usa la primera aparición de un ejecutable en la ruta.
Aquí está el escenario:
echo $PATH devoluciones:
/usr/local/Cellar/zplug/HEAD-9fdb388/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
la cerveza está en ambos
/usr/local/Cellar/zplug/HEAD-9fdb388/bin
y
usr/local/bin/brew
Esto se confirma ejecutando which -a brew que devuelve:
/usr/local/Cellar/zplug/HEAD-9fdb388/bin/brew
/usr/local/bin/brew
Pero cuando ejecuto cuál cerveza vuelve:
/usr/local/bin/brew
y la cerveza corre en /usr/local/bin/brewlugar de/usr/local/Cellar/zplug/HEAD-9fdb388/bin/brew
¿Cómo puede suceder esto cuando la cerveza está más temprano en el camino?
Ayuda apreciada.

rehashy ejecutarlos de nuevo, si aún sucede después, edítelo .Respuestas:
which -a cmdbusca todos los archivos normales nombrados para loscmdcuales tiene permiso de ejecución en los directorios$path(además de alias, funciones, incorporados ...).While
which cmddevuelve el comando quezshse ejecutaría (whiches una función incorporadazshsimilartcsha la de la mayoría de los otros shells).zsh, como la mayoría de los otros shells, recuerda las rutas de los ejecutables en unahashtabla para no tener que buscarlos en todos los directorios$pathcada vez que los invoca.Esa tabla hash (expuesta en la
$commandsmatriz asociativa enzsh) se puede manipular con elhashcomando (comando de shell POSIX estándar).Si ha ejecutado el
brewcomando (owhich/type/whence brew, o ha utilizado la finalización del comando o cualquier cosa que hubiera preparado ese hash / caché) antes de agregarlo/usr/local/Cellar/zplug/HEAD-9fdb388/bino antes de/usr/local/Cellar/zplug/HEAD-9fdb388/binagregarlo$path,zshhabría recordado su ruta y lo habría almacenado como$commands[brew]=/usr/local/bin/brew.En ese caso, puede usar
hash -r(como en el shell Bourne) orehash(como en csh) parazsholvidar los comandos recordados (invalidar ese caché ), para que pueda buscarlo la próxima vez y encontrarlo en la nueva ubicación.fuente
$commandsno$command. Ver editar./usr/local/bin/brewes generalmente un enlace simbólico.Entonces
/usr/local/bin/brewy/usr/local/Cellar/zplug/HEAD-9fdb388/bin/brewson probablemente los mismos archivos.
tipo:
para confirmar.
fuente