我正在使用 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
进行完整查找,而又名依赖于缓存的数据(由特殊关联数组公开)。$PATH
which
whence -c
$commands
如果该/usr/local/Caskroom/miniconda/base/envs/tg/bin/ipython
文件是在缓存构建后添加的,则会被whence
.
执行hash -r
/rehash
将使该缓存无效,之后您可能会发现这一点where
并which
同意。看代码了解详情。