hash -r 命令有什么作用?

gsc*_*ial 15 bash

最近,我切换到Linux的窗户全部时间,虽然我试图更新我npm用包n,我得到了新的二进制文件/usr/local/bin和以前的版本是在/usr/bin。所以,它总是选择以前的版本。

根据一位用户的推荐,我使用了hash-r命令并且它起作用了。但是,我不知道它做了什么。

如果有人可以向我解释其内部结构,那将非常有帮助。

ste*_*ver 9

hashbashshell的内置命令。有关它的作用的摘要,您可以help hash在 shell 提示符下键入:

$ help hash
hash: hash [-lr] [-p pathname] [-dt] [name ...]
    Remember or display program locations.

    Determine and remember the full pathname of each command NAME.  If
    no arguments are given, information about remembered commands is displayed.

    Options:
      -d    forget the remembered location of each NAME
      -l    display in a format that may be reused as input
      -p pathname   use PATHNAME as the full pathname of NAME
      -r    forget all remembered locations
      -t    print the remembered location of each NAME, preceding
            each location with the corresponding NAME if multiple
            NAMEs are given
    Arguments:
      NAME  Each NAME is searched for in $PATH and added to the list
            of remembered commands.

    Exit Status:
    Returns success unless NAME is not found or an invalid option is given.
Run Code Online (Sandbox Code Playgroud)

所以,hash记住程序位置,然后hash -r忘记它们。


小智 8

shell 会跟踪诸如 npm 之类的可执行文件所在的位置,以避免每次要运行某些东西时都必须搜索 PATH 环境变量。

  • 散列的 -r(重置)参数清除缓存。

  • 如果您想查看 hash 记住了哪些命令,只需键入 hash 本身而不带任何参数。

您可以通过键入 set +h 完全禁用缓存并通过 set -h 重新启用它