当前位置: 首页 > 面试题库 >

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

柳培
2023-03-14
问题内容

谁能解释默认情况下如何在我的计算机上运行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

问题答案:

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

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

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



 类似资料: