![为什么在 PATH 中找不到程序](https://linux22.com/image/149092/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%20PATH%20%E4%B8%AD%E6%89%BE%E4%B8%8D%E5%88%B0%E7%A8%8B%E5%BA%8F.png)
我已经ipython
在 macOS 上安装了 virtualenv 内部。我的 PATH 环境变量还显示 virtualenv 路径位于开头。which
命令还显示该命令ipython
位于正确的位置。
问题是,当我运行时ipython
,shell 在一个奇怪的地方找到了以前的安装。以下是一些示例:
(csv_import) $ ipython
-bash: /usr/local/bin/ipython: /usr/local/opt/python3/bin/python3.6: bad interpreter: No such file or directory
(csv_import) $
(csv_import) $ which ipython
/Users/zeinep/.virtualenvs/csv_import/bin/ipython
(csv_import) $
(csv_import) $ echo $PATH
/Users/zeinep/.virtualenvs/csv_import/bin:/Users/zeinep/.avn/bin:/Users/zeinep/.nvm/versions/node/v10.14.1/bin:/usr/local/lib/python3.6/bin:/Users/zeinep/Library/Python/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
(csv_import) $
(csv_import) $
(csv_import) $ /Users/zeinep/.virtualenvs/csv_import/bin/ipython
Python 3.6.5 (default, Jun 17 2018, 12:13:06)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.3.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]:
可以看出,如果我使用完整路径,它就可以工作。否则,/usr/local/bin/ipython
即使 shell 应该在 virtualenv 中找到我所看到的,旧的安装也会运行。
答案1
显然,您/Users/zeinep/.virtualenvs/csv_import/bin
在$PATH
bash 保存(散列)版本后添加了该/usr/local/bin
版本。修复方法就像这样简单hash -d ipython
。