注意linux bash快取

2021-09-06 07:35:50 字數 863 閱讀 9035

在已經執行的系統中更改了某些以前存在於path環境變數所指明的目錄中的程式的存放目錄後可能出現no such file or directory的錯誤提示。

比如,以前python存放於/usr/bin/下,現在臨時將/usr/bin/python刪除,在/usr/local/bin下生成python,按照正常邏輯,此時直接執行python的話,會找到/usr/local/bin/python,因為/usr/local/bin也在環境變數path中,但卻會出現bash: /usr/bin/python: no such file or directory

為何?具體原因如下:

bash會儲存乙個從開機執行以來曾執行過得命令,而不是每次都搜尋$path,如果在上次執行python命令之後更改了python的實際位置,則bash還會去按照原有hash table裡面記錄的路徑去執行,但因為原執行檔案已不存,所以會報出no such file or directory的錯誤提示。

通過執行 hash 命令可以很容易看出:

root@ubuntu:~$ hash

hits    command

3    /usr/bin/which

2    /usr/bin/file

4    /usr/bin/sudo

1    /bin/mv

1    /usr/bin/whereis

7    /usr/bin/python

root@ubuntu:~$

解決方法:

解決方法也很簡單,重置bash 的hash table即可,比如執行 hash -d python即可刪除hash table中python的記錄,如果再次執行python的時候,bash將搜尋$path得到新的python路徑

linux bash指令碼入門

最簡單的例子 hello world 幾乎所有的講解程式設計的書給讀者的第乙個例子都是 hello world 程式,那麼我們今天也就從這個例子出發,來逐步了解 bash。bin bash this is a very example echo hello world 這樣最簡單的乙個 bash 程...

Linux Bash 程式題解

設計乙個程式 cuts,它由標準輸入讀取資料,獲取由第乙個引數 n 和第二個引數 m 所限定範圍的資料,n 和 m 都是整數,即從輸入的字串中抽取第 n 個字元至第 m 個字元之間的所有字元 包括這兩個字元 例如 cuts 11 14this is a test of cuts program 輸入...

Linux bash 變數分類

bash中變數的種類 本地變數 生效範圍為當前shell程序,對其他shell程序均無效 變數賦值 name value value 可以是直接字串,name username 變數引用,name username 命令引用,name command或者name c omma nd 變 量引用 co...