gwg*_*gwg 33 command-line bash executable
例如:
$ node
-bash: /usr/local/bin/node: No such file or directory
$ foo
-bash: foo: command not found
Run Code Online (Sandbox Code Playgroud)
有什么不同?在这两种情况下,node和foo无效的命令,但它似乎像Unix那样只是找不到node二进制?卸载程序时,例如node,有没有办法清理它,以便我得到
$ node
-bash: node: command not found
Run Code Online (Sandbox Code Playgroud)
编辑:
type命令的结果:
$ type node
node is hashed (/usr/local/bin/node)
$ type foo
-bash: type: foo: not found
Run Code Online (Sandbox Code Playgroud)
cuo*_*glm 60
那是因为bash记住了您的命令位置,将其存储在哈希表中。
卸载后node,哈希表没有清除,bash仍然认为node是 at /usr/local/bin/node,跳过PATH查找,/usr/local/bin/node直接调用,使用execve(). 因为 whennode不再存在,execve()返回ENOENT错误,意味着没有这样的文件或目录,bash向您报告该错误。
在 中bash,您可以从哈希表中删除条目:
hash -d node
Run Code Online (Sandbox Code Playgroud)
或删除整个哈希表(适用于所有 POSIX shell):
hash -r
Run Code Online (Sandbox Code Playgroud)