忘记 bash 交互式 shell 中散列的可执行位置

Lor*_*ein 2 bash

我经常遇到这样的情况,我在 Python virtualenv 中工作,我想运行一个可执行的 Python 程序(例如,bpython)。我运行它,忘记了我没有在我的 virtualenv 中安装它,所以它不会做正确的事情。然后,我在我的 virtualenv 中安装了 bpython,但是如果我尝试运行新版本,bash 会“记住”旧版本并调用它。

更具体地说:

(venv)$ bpython
       (whoops, system-level bpython!)
(venv)$ which bpython
/usr/local/bin/bpython
(venv)$ type bpython
bpython is hashed (/usr/local/bin/bpython)
(venv)$ pip install bpython 
(venv)$ which bpython
/Users/lorin/.virtualenvs/venv/bin/bpython
(venv)$ type bpython
bpython is hashed (/usr/local/bin/bpython)
Run Code Online (Sandbox Code Playgroud)

我如何告诉 bash 提示“忘记” bpython 的位置是/usr/local/bin/bpython针对该会话的?

cho*_*oba 7

你可以告诉 bash 重新哈希:

hash -r
Run Code Online (Sandbox Code Playgroud)