[英]Does bash have a cache to remember where it last found a binary?
好的,所以我在我的系統里玩。 我復制了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以獲取更多詳細信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.