在已經執行的系統中更改了某些以前存在於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...