In bash, “which” gives an incorrect path - Python versions

前端 未结 2 1980
挽巷
挽巷 2020-12-09 18:43

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

相关标签:
2条回答
  • 2020-12-09 19:13

    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.

    0 讨论(0)
  • 2020-12-09 19:19

    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!

    0 讨论(0)
提交回复
热议问题