好的,所以我正在系统中玩耍.我复制了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以获取更多详细信息
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!