为什么或者怎么说我的路径没有得到MacOSX的尊重?

为什么或者怎么说我的路径没有得到MacOSX的尊重?,macos,osx-leopard,Macos,Osx Leopard,“默认情况下”执行的二进制文件——即which命令返回的在我的路径中找到的第一个二进制文件——实际上不是默认情况下执行的二进制文件,这怎么可能呢?(我在2008年的MacBookPro上运行MacOSX10.5。) 我刚刚通过运行brew install git 它将新版本安装在比旧二进制文件更高或更早的位置。但是,默认情况下不会执行新版本。这就好像在我安装新的二进制文件之前,shell已经缓存了二进制文件的位置,但是命令每次运行时都会解析路径 我想了解这里发生了什么,并了解如何在不注销或重新启

“默认情况下”执行的二进制文件——即
which
命令返回的在我的路径中找到的第一个二进制文件——实际上不是默认情况下执行的二进制文件,这怎么可能呢?(我在2008年的MacBookPro上运行MacOSX10.5。)

我刚刚通过运行
brew install git

它将新版本安装在比旧二进制文件更高或更早的位置。但是,默认情况下不会执行新版本。这就好像在我安装新的二进制文件之前,shell已经缓存了二进制文件的位置,但是
命令每次运行时都会解析路径

我想了解这里发生了什么,并了解如何在不注销或重新启动机器的情况下刷新“缓存”。这就是我所看到的:

which git
返回

/usr/local/bin/git
git version 1.6.5
git version 1.7.7
git version 1.6.5

返回

/usr/local/bin/git
git version 1.6.5
git version 1.7.7
git version 1.6.5
但是

返回

/usr/local/bin/git
git version 1.6.5
git version 1.7.7
git version 1.6.5
进一步核实,

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/bin/git
git version 1.6.5
git version 1.7.7
git version 1.6.5
更新——下面是bash哈希的答案。(发件人:)


在给定的shell实例中,二进制文件的路径确实是缓存的。清除此问题的最简单方法是只打开一个新的终端窗口。但是,您也可以在现有窗口中使用内置的
hash
shell清除它(有关详细信息,请阅读
help hash


至于为什么
which
与shell不同意执行二进制文件,这是因为
which
是一个位于
/usr/bin/which
并独立于shell解析
路径的程序。如果您想确切地看到shell所看到的内容,请使用
type
而不是
which
(并使用
type-a
查看给定命令的所有可能结果)。

您可能需要“重新显示”。