zsh - where 和 which 在第一行给出不同的结果

zsh - where 和 which 在第一行给出不同的结果

我正在使用 zsh 并ipython在我的中有 2 个可执行文件$PATH

❯ which ipython
/usr/local/Caskroom/miniconda/base/bin/ipython
❯ where ipython
/usr/local/Caskroom/miniconda/base/envs/tg/bin/ipython
/usr/local/Caskroom/miniconda/base/bin/ipython

where正如您所看到的,which第一行给出了不同的结果,这是为什么呢?

答案1

当谈到寻找外部可执行文件时where,又名对命令whence -ca进行完整查找,而又名依赖于缓存的数据(由特殊关联数组公开)。$PATHwhichwhence -c$commands

如果该/usr/local/Caskroom/miniconda/base/envs/tg/bin/ipython文件是在缓存构建后添加的,则会被whence.

执行hash -r/rehash将使该缓存无效,之后您可能会发现这一点wherewhich同意。看代码了解详情。

相关内容