最近,我切换到Linux的窗户全部时间,虽然我试图更新我npm用包n,我得到了新的二进制文件/usr/local/bin和以前的版本是在/usr/bin。所以,它总是选择以前的版本。
根据一位用户的推荐,我使用了hash-r命令并且它起作用了。但是,我不知道它做了什么。
如果有人可以向我解释其内部结构,那将非常有帮助。
hash是bashshell的内置命令。有关它的作用的摘要,您可以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 重新启用它
| 归档时间: |
|
| 查看次数: |
6563 次 |
| 最近记录: |