Can anyone explain how python 2.6 could be getting run by default on my machine? It looks like python
points to 2.7, so it seems like which
isn\'t
Bash uses an internal hash table to optimize $PATH
lookups. When you install a new program with the same name as an existing program (python
in this case) earlier in your $PATH
, Bash doesn't know about it and continues to use the old one. The which
executable does a full $PATH
search and prints out the intended result.
To fix this, run the command hash -d python
. This will delete python
from Bash's hash table and force it to do a full $PATH
search the next time you invoke it. Alternatively, you can also run hash -r
to clear out the hash table entirely.
The type builtin will tell you how a given command will be interpreted. If it says that a command is hashed, that means that Bash is going to skip the $PATH
search for the executable.
I just checked my .bash_profile
, and it contained the following:
# Setting PATH for MacPython 2.6
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:/usr/local/git/bin:${PATH}"
export PATH
Commenting this out has fixed my problem.
If someone can tell me why which
and type
still gave incorrect answers, I'd be very grateful, and will give them a check-mark!
Thanks for all your guidance!