为什么 hash 命令为此返回 0
$ hash -r
$ ls -l ./kkk
./kkk: No such file or directory
$ hash ./kkk
$ echo $?
0
答案1
如果在执行路径搜索后hash
找到给定的实用程序,该实用程序将返回 true。$PATH
由于您为实用程序的名称提供了路径,因此 shell 会不是对它进行路径搜索,但使用您提供的路径 ( ./
)。直到 shell 真正尝试跑步该路径上的实用程序发现它不存在。
如果实用程序包含一个或多个
<slash>
字符,则结果未指定。
...并且bash
显然将未指定的行为实现为“如果不需要进行路径搜索来找到实用程序,则返回零退出状态”。