Multiple Installations and Understanding $PATH

I have an older version of Git installed at:

/usr/bin/

I recently downloaded a newer version to:

/usr/local/bin

When I type:

which git

I get the location of the old version. I believe that this is just because /usr/bin/ appears before /usr/local/bin in my $PATH variable and so the older version of git is 'found' first.

To test this, I renamed the older version of git to "git_old". Now when I type:

which git

I get the location of the newer version, as expected. But when I type:

git --version

I get the following error:

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

I'm just wondering why my computer is going back to looking in the old location for Git?


Bash caches the full path to executables so that it doesn't have to look through $PATH every time.

You can see what is in the cache using the hash command:

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

This cache can be cleared with hash -r:

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

Additional Resources

  • How do I clear Bash's cache of paths to executables? on Unix Stack Exchange
  • What is the purpose of the hash command? on Unix Stack Exchange
  • How to get bash to automatically refresh program locations' cache? on Super User
  • Documentation on hash