好的,所以我正在系统中玩耍.我复制了GNU字数统计程序:
cp /usr/bin/wc /usr/bin/wcx
然后我在桌面上的文本文件上运行了wc,并得到了预期的结果:
53 79 907 /home/me/Desktop/mytextfile.txt
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以获取更多详细信息
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。