In bash, "which" gives an incorrect path - Python versions
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.