我正在使用 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
在第一行给出不同的结果,这是为什么呢?
在查找外部可执行文件
where
时,aka对命令whence -ca
进行完整$PATH
查找,而which
akawhence -c
依赖于缓存数据(由$commands
特殊关联数组公开)。如果
/usr/local/Caskroom/miniconda/base/envs/tg/bin/ipython
文件是在缓存建立后添加的,它将被whence
.执行
hash -r
/rehash
将使该缓存无效,之后您可能会发现where
并which
同意。有关详细信息,请参阅代码。