【发布时间】:2021-01-22 03:25:18
【问题描述】:
二进制文件如何“默认”执行——即。在我的路径中找到的第一个,由which 命令返回,实际上不是默认情况下实际执行的二进制文件吗? (我在 2008 MacBook Pro 上运行 Mac OS X 10.5。)
我刚刚通过运行brew install git 安装了最新版本的git
它将新版本安装在我的路径中比旧二进制文件更高或更早的位置。但是,默认情况下不执行新版本。就好像在我安装新的之前,shell 已经缓存了二进制文件的位置 - 但是which 命令每次运行时都会解析路径。
我想了解这里发生了什么,并了解如何在无需注销或重新启动机器的情况下刷新“缓存”。这就是我所看到的:
which git
返回
/usr/local/bin/git
同时
git --version
返回
git version 1.6.5
但是
/usr/local/bin/git --version
返回
git version 1.7.7
进一步检查,
which -a git
返回
/usr/local/bin/git
/usr/local/git/bin/git
/usr/local/bin/git
/usr/local/git/bin/git
/usr/local/bin/git
/usr/local/git/bin/git
(是的 - 我的路径设置中有一些冗余。)
/usr/local/git/bin/git --version
返回
git version 1.6.5
更新 -- 这是答案 bash 哈希。 (来自: In bash, "which" gives an incorrect path - Python versions)
type git
git is hashed (/usr/local/git/bin/git)
$ hash -d git
$ type git
git is /usr/local/bin/git
$ which git
/usr/local/bin/git
git --version
git version 1.7.7
【问题讨论】:
-
'rehash' 可能是你需要的。
标签: macos osx-leopard