簡體   English   中英

bash有緩存來記住上次找到二進制文件的位置嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM