hash -r 命令有什么作用?

hash -r 命令有什么作用?

我最近从 Windows 全职转到 Linux,当我尝试npm使用 更新我的软件包时n,我获取了新的二进制文件,/usr/local/bin而以前的版本在/usr/bin。因此,它总是选择以前的版本。

根据其他用户的建议,我使用了hash-r命令,并且成功了。但是,我不知道它做了什么。

如果有人能向我解释其内部原理的话将会非常有帮助。

答案1

hash是 shell 的内置命令bash。要了解它的功能,您可以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.

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

答案2

shell 跟踪 npm 等可执行文件所在的位置,以避免每次想要运行某个程序时都必须搜索 PATH 环境变量。

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

  • 如果您想查看 hash 记住了哪些命令,只需单独输入 hash 即可,无需任何参数。

您可以通过输入 set +h 完全禁用缓存,然后通过 set -h 重新启用它

相关内容