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