为什么或者怎么说我的路径没有得到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
查看给定命令的所有可能结果)。您可能需要“重新显示”。