解決 Linux 中的 “Bash: Command Not Found” 報錯
當你在 Linux 中使用命令時,你希望得到終端輸出的結果。但有時候,你會遇到終端顯示“命令未找到command not found”這一報錯。
對于這個問題,并沒有直截了當且單一的解決方案。你必須自己做一些故障排除來解決這個報錯。
老實說,要解決它并不難。該報錯信息已經給出了一些提示:“命令未找到”,這說明你的 shell(或者 Linux 系統)找不到你輸入的那條命令。
shell(或 Linux 系統)找不到命令,有三個可能的原因:
- 你將命令的名稱拼錯了
- 該命令還沒有安裝
- 該命令是一個可執行腳本,但其位置未知
接下來,我們會詳細介紹“命令未找到”這一報錯的每一個原因。
解決“命令未找到”報錯
方法 1:再次檢查命令名稱有沒有寫錯
每個人都會犯錯誤,尤其是在打字的時候。你輸入的命令可能存在錯別字(也就是你寫錯啦)。
你應該特別注意:
- 是否拼對了正確的命令名稱
- 是否在命令與其選項之間加上了空格
- 是否在拼寫中混淆了 1(數字 1)、I(大寫的 i)和 l(小寫的 L)
- 是否正確使用了大寫字母或者小寫字母
看看下面的示例,因為我寫錯了 ??ls?
? 命令,所以會導致“command not found”報錯。
所以,請再次仔細確認你輸入得對不對。
方法 2:確保命令已安裝在你的系統上
這是“命令未找到”錯誤的另一個常見原因。如果命令尚未安裝,則無法運行該命令。
雖然在默認情況下,你的 Linux 發行版自帶安裝了大量命令,但是不會在系統中預裝 所有的 命令行工具。如果你嘗試運行的命令不是一個流行的常用命令,那么你需要先安裝它。
你可以使用發行版的軟件包管理器來安裝命令。
You may have to install the missing command
有時候,某一常用命令可能也不再能使用了,甚至你也不能夠安裝這個命令了。這種情況下,你需要找到一個替代的命令,來得到結果。
以現已棄用的 ??ifconfig?
? 命令為例。網絡上的舊教程依舊會讓你使用 ??ifconfig?
? 命令,來 ??獲取本機的 IP 地址?? 和網絡接口信息,但是,在較新的 Linux 版本中,你已經無法使用 ??ifconfig?
? 了。??ifconfig?
? 命令已被 ??ip?
? 命令所取代。
Some popular commands get discontinued over the time
有時候,你的系統可能甚至找不到一些非常常見的命令。當你在 Docker 容器中運行 Linux 發行版時,就通常如此。Docker 容器為了縮小操作系統鏡像的大小,容器中通常不包含那些常見的 Linux 命令。
這就是為什么使用 Docker 的用戶會碰到 ??ping 命令未找到?? 等報錯的原因。
Docker containers often have only a few commands installed
因此,這種情況下的解決方案是安裝缺失的命令,或者是找到一個與缺失命令有同等功能的工具。
方法 3:確保命令是真實的,而不是一個別名
我希望你知道 Linux 中的別名概念。你可以配置你自己的較短的命令來代替一個較長命令的輸入。
一些發行版,如 Ubuntu,會自動提供 ??ll?
?(??ls -l?
? 的別名)、??la?
?(??ls -a?
? 的別名)等命令。
想象一下,你習慣于在你的個人系統上輸入 ??ll?
? 和 ??la?
?,而你登錄到另一個 Linux 系統,發現 ??ll?
? 命令并不存在。你甚至不能安裝 ??ll?
? 命令,因為它不是一個真正的命令。
所以,如果你找不到一個命令,甚至不能安裝,你應該嘗試在互聯網上搜索該命令是否存在。如果不存在,可能是其他系統上的一個別名。
方法 4:檢查命令是否是一個路徑正確的可執行腳本
這是 Linux 新手在 ??運行 shell 腳本?? 時常犯的錯誤。
即使你在同一目錄下,僅用可執行腳本的名稱,來運行可執行腳本,也會顯示錯誤。
因為你需要顯式指定 shell 解釋器或可執行腳本的路徑!
如果你在其他目錄下,在未提供文件正確路徑的情況下,運行 shell 腳本,則會有“找不到文件no such file or directory”的報錯。
把可執行文件的路徑加到 PATH 變量中
有時候,你下載了一個軟件的壓縮文件(tar 格式),解壓這個 tar 文件,然后找到一個可執行文件和其他程序文件。你需要運行可執行文件,來運行那個軟件。
但是,你需要在可執行文件的同一目錄下或指定可執行文件的整個路徑,才能運行那個可執行文件。這很令人煩擾。
你可以使用 ?
?PATH?
? 變量來解決這個問題。??PATH?
? 變量包含了有各種 Linux 命令的二進制(可執行)文件的目錄集合。當你運行一個命令時,你的 Linux 系統會檢查 ??PATH?
? 變量中的上述目錄,以查找該命令的可執行文件。你可以使用 ?
?which?
? 命令,來檢查某一命令的二進制文件的位置:
如果你想從系統上的任何地方都能運行可執行文件或腳本,你需要將可執行文件的位置添加到 ?
?PATH?
? 變量中。
然后,?
?PATH?
? 變量需要添加到 shell 的 rc 文件中,如此對 ??PATH?
? 變量的更改就是永久性的。這里的要點是:你的 Linux 系統必須了解可執行腳本的位置。要么在運行時給出可執行文件的整個路徑,要么將其位置添加到 ?
?PATH?
? 變量中。
以上的內容有幫到你嗎?
我懂得,當你是 Linux 新手時,很多事情可能會讓你不知所措。但是,當你了解問題的根本原因時,你的知識會逐漸增加。
對于“未找到命令”報錯來說,沒有簡單的解決方案。我提供給你了一些提示和要點,我希望這對你的故障排除有幫助。