linux-bash是否具有缓存以记住上次找到二进制文件的位置?

好的,所以我正在系统中玩耍.我复制了GNU字数统计程序:

cp /usr/bin/wc /usr/bin/wcx

然后我在桌面上的文本文件上运行了wc,并得到了预期的结果:

53 79 907 /home/me/Desktop/mytextfile.txt

到目前为止,没有任何异常.然后我删除(删除)wc

rm /usr/bin/wc

并且该命令返回且没有终端输出.因此它已被删除.

现在,在这一点上,我应该注意,此终端中的PATH是:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/bin:/sbin:/bin:/usr/games: [ETC]

现在,当我运行相同的命令时:

wc /home/me/Desktop/mytextfile.txt

我回来了:

bash: /usr/bin/wc: No such file or directory

现在,很明显,当我删除它时,它应该找不到wc二进制文件.符合预期.但是奇怪的是,bash似乎已经“记住”它最后一次在PATH上找到程序的位置,因为它表明它在/usr/bin中找不到它.

这是bash的实际功能吗?是否有一个缓存,一旦它在PATH中搜索了二进制文件,便知道返回该位置以备将来对该二进制文件的请求?

感谢您帮助清除此问题!

解决方法:

是的bash有一个内部哈希表,可以记住以前使用的命令的完整路径.查看man bash并搜索hash以获取更多详细信息

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...