多次安装并了解$ PATH


17

我在以下位置安装了较旧版本的Git:

/usr/bin/

我最近将更新版本下载到:

/usr/local/bin

当我键入:

which git

我得到了旧版本的位置。我相信这仅仅是因为/ usr / bin /出现在$ PATH变量中的/ usr / local / bin之前,因此较旧的git首先被“找到”。

为了测试这一点,我将较旧版本的git重命名为“ git_old”。现在,当我键入:

which git

我得到了预期的较新版本的位置。但是当我键入:

git --version

我收到以下错误:

-bash: /usr/bin/git: No such file or directory

我只是想知道为什么我的计算机又回到原来的位置查找Git?

Answers:


30

Bash缓存了可执行文件的完整路径,因此不必$PATH每次都浏览。

您可以使用以下hash命令查看缓存中的内容:

deltik@node51 [~]$ hash
hits    command
   1    /usr/bin/git

可以使用以下命令清除此缓存hash -r

deltik@node51 [~]$ hash -r
deltik@node51 [~]$ hash
hash: hash table empty

其他资源


2
我从来不知道,真棒。
djsmiley2k-CoW

1
大多数其他Shell都做同样的事情,但是它们并没有全部用于hash -r重新加载缓存。歌手(例如SSH)rehash改为用作命令。
Moshe Katz

PATH = $ PATH应该清除缓存。不需要-h。
jrw32982在2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.