我gmx
在这两条路径上调用了一个命令:
/usr/local/bin/gmx
Run Code Online (Sandbox Code Playgroud)
和
/Users/alexamil/.nvm/versions/node/v9.2.0/bin/gmx
Run Code Online (Sandbox Code Playgroud)
我怎样才能删除其中一个的 bash 哈希?
如果我跑:
hash -d gmx
Run Code Online (Sandbox Code Playgroud)
删除的是哪一个?是删除两者,还是只删除最近的值?这对删除特定的有效吗?
hash -d "/Users/alexamil/.nvm/versions/node/v9.2.0/bin/gmx"
Run Code Online (Sandbox Code Playgroud)
Bash 只记住每个名称的一个路径,因此它gmx
(最多)只有一个路径。您可以通过运行查看是哪一个
hash -t gmx
Run Code Online (Sandbox Code Playgroud)
跑步
hash -d gmx
Run Code Online (Sandbox Code Playgroud)
将删除任何条目gmx
(由 显示的条目hash -t
)。下次您尝试运行时gmx
,shell 将在您的 中列出的目录中查找它PATH
,并将它找到的第一个存储为散列。
您不能删除特定值,但可以强制使用特定值,包括不在您的PATH
:
hash -p /usr/local/bin/gmx gmx
Run Code Online (Sandbox Code Playgroud)
这将导致 shell/usr/local/bin/gmx
在您键入时运行gmx
。
有关详细信息,请参阅Bash 手册。