在bash中,“哪”给出了错误的路径-Python版本

发布于 2021-01-29 17:39:05

谁能解释默认情况下如何在我的计算机上运行python 2.6?似乎 python指向2.7,所以似乎which没有给我正确的信息。

~> python --version
Python 2.6.5
~> which python
/opt/local/bin/python
~> /opt/local/bin/python --version
Python 2.7.2
~> ls -l /opt/local/bin/python
lrwxr-xr-x  1 root  admin  24 12 Oct 16:02 /opt/local/bin/python -> /opt/local/bin/python2.7

当我产生错误时,我看到了真正正在运行的东西。为什么会这样呢?

~> python -error-making-argument
Unknown option: -e
usage:     /Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Try `python -h' for more information.

我该如何纠正呢?

- - 编辑: - -

从评论中的建议:

~> alias
alias cp='cp -i'
alias gcc='gcc -Wall'
~> type python
python is /opt/local/bin/python
关注者
0
被浏览
219
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    Bash使用内部哈希表来优化$PATH查找。当您python在您的较早位置安装了一个与现有程序同名的新程序时$PATH,Bash对此一无所知,并继续使用旧程序。该which可执行文件做了全面$PATH的搜索和打印出想要的结果。

    要解决此问题,请运行命令hash -d python。这python将从Bash的哈希表中删除,并$PATH在下次调用它时强制它进行完全搜索。或者,您也可以运行hash -r以完全清除哈希表。

    type 内建将告诉你如何在给定命令将被解释。如果它说命令被散列,则意味着Bash将跳过$PATH对可执行文件的搜索。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看