Linux中國

解決 Linux 中的 「Bash: Command Not Found」 報錯

本新手教程展示了在 Debian、Ubuntu 和其他的 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,會自動提供 llls -l 的別名)、lals -a 的別名)等命令。

想像一下,你習慣於在你的個人系統上輸入 llla,而你登錄到另一個 Linux 系統,發現 ll 命令並不存在。你甚至不能安裝 ll 命令,因為它不是一個真正的命令。

所以,如果你找不到一個命令,甚至不能安裝,你應該嘗試在互聯網上搜索該命令是否存在。如果不存在,可能是其他系統上的一個別名。

方法 4:檢查命令是否是一個路徑正確的可執行腳本

這是 Linux 新手在 運行 shell 腳本 時常犯的錯誤。

即使你在同一目錄下,僅用可執行腳本的名稱,來運行可執行腳本,也會顯示錯誤。

[email protected]:~/scripts# sample
-bash: sample: command not found

因為你需要顯式指定 shell 解釋器或可執行腳本的路徑!

如果你在其他目錄下,在未提供文件正確路徑的情況下,運行 shell 腳本,則會有「 找不到文件 no such file or directory 」的報錯。

把可執行文件的路徑加到 PATH 變數中

有時候,你下載了一個軟體的壓縮文件(tar 格式),解壓這個 tar 文件,然後找到一個可執行文件和其他程序文件。你需要運行可執行文件,來運行那個軟體。

但是,你需要在可執行文件的同一目錄下或指定可執行文件的整個路徑,才能運行那個可執行文件。這很令人煩擾。

你可以使用 PATH 變數來解決這個問題。PATH 變數包含了有各種 Linux 命令的二進位(可執行)文件的目錄集合。當你運行一個命令時,你的 Linux 系統會檢查 PATH 變數中的上述目錄,以查找該命令的可執行文件。

你可以使用 which 命令,來檢查某一命令的二進位文件的位置:

如果你想從系統上的任何地方都能運行可執行文件或腳本,你需要將可執行文件的位置添加到 PATH 變數中。

然後,PATH 變數需要添加到 shell 的 rc 文件中,如此對 PATH 變數的更改就是永久性的。

這裡的要點是:你的 Linux 系統必須了解可執行腳本的位置。要麼在運行時給出可執行文件的整個路徑,要麼將其位置添加到 PATH 變數中。

以上的內容有幫到你嗎?

我懂得,當你是 Linux 新手時,很多事情可能會讓你不知所措。但是,當你了解問題的根本原因時,你的知識會逐漸增加。

對於「未找到命令」報錯來說,沒有簡單的解決方案。我提供給你了一些提示和要點,我希望這對你的故障排除有幫助。

如果你仍然有疑問或需要幫助,請在評論區告訴我吧。

via: https://itsfoss.com/bash-command-not-found/

作者:Abhishek Prakash 選題:lujun9972 譯者:chai001125 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國