解决 Linux 中的 “Bash: Command Not Found” 报错

导读本新手教程展示了在 Debian、Ubuntu 和其他的 Linux 发行版上如何解决 “Bash: command not found” 这一报错。

Free operationg system. The word "Linux" is lined with gold letters on wooden planks. 3D illustration graphics

当你在 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 脚本​​ 时常犯的错误。

即使你在同一目录下,仅用可执行脚本的名称,来运行可执行脚本,也会显示错误。

[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 新手时,很多事情可能会让你不知所措。但是,当你了解问题的根本原因时,你的知识会逐渐增加。

对于“未找到命令”报错来说,没有简单的解决方案。我提供给你了一些提示和要点,我希望这对你的故障排除有帮助。https://www.linuxprobe.com/?p=255898

<think>好的,用户之前问了关于cmake .. && make的问题,现在他在CentOS7系统上遇到了“bash: cmake: command not found”的错误。这说明他尝试运行cmake命令,但系统找不到这个命令。我需要先确定用户的问题所在,可能的原因以及解决方法。 首先,用户可能没有安装CMake。CentOS7默认的软件仓库可能没有最新版本的CMake,或者根本没有安装。我需要考虑不同的安装方法,比如使用yum安装默认仓库中的版本,或者从源码编译安装最新版本,或者添加EPEL仓库来获取较新的版本。另外,用户可能没有安装开发工具链,比如gcc和make,这些也是编译所需的依赖。 接下来,用户的身份权限可能不足,需要用sudo来安装软件,或者他可能不知道需要先安装这些工具。此外,用户可能在安装后没有正确设置环境变量,导致bash找不到cmake命令。也可能他安装的是较新版本的CMake,而默认安装路径不在PATH中。 我需要分步骤解释解决方法,首先检查是否安装,然后提供多种安装方式,包括简单的方法和手动编译的方法。同时,提醒用户安装必要的依赖,如gcc和make。还要注意用户可能对Linux系统不太熟悉,所以需要给出具体的命令示例,并解释每个步骤的作用。比如,使用yum安装可能比较直接,而源码安装适合需要特定版本的情况。 另外,用户可能是在尝试编译某个项目时遇到这个问题,可能需要确保所有依赖都正确安装。最后,验证安装是否成功,通过cmake --version来检查。还要注意权限问题,可能需要sudo权限,所以命令中需要包含sudo。同时,如果用户使用非root账户,可能需要指导他们如何获得权限或者使用其他安装方法。 总结来说,我需要提供一个清晰的步骤指南,涵盖不同的安装方法,确保用户能够根据自身情况选择合适的解决方案,并解决可能遇到的依赖和权限问题。</think>你在 CentOS 7 系统中运行 `cmake` 命令时出现 **`bash: cmake: command not found`** 错误,说明系统未安装 CMake 或未正确配置环境。以下是完整的解决方案: --- ### **1. 原因分析** - **CMake 未安装**:CentOS 7 默认软件仓库中可能不包含 CMake(或版本较旧),需要手动安装。 - **环境变量未配置**(较少见):如果已安装但未添加到 `PATH` 环境变量中,也会导致此错误。 --- ### **2. 解决方案** #### **方法一:通过 Yum 直接安装(推荐简单场景)** CentOS 7 默认仓库中可能包含较旧版本的 CMake(如 2.8.x),适合对版本无特殊要求的场景: ```bash # 更新软件包缓存 sudo yum update # 安装 CMake sudo yum install cmake # 验证安装 cmake --version ``` #### **方法二:通过 EPEL 仓库安装较新版本** 若需要较新版本(如 3.x),可启用 **EPEL 仓库**(Extra Packages for Enterprise Linux): ```bash # 安装 EPEL 仓库 sudo yum install epel-release # 再次安装 CMake(会从 EPEL 获取较新版本) sudo yum install cmake # 验证版本 cmake --version ``` #### **方法三:手动编译安装最新版(推荐高版本需求)** 如果项目依赖新版 CMake(如 >=3.20),需手动编译安装: ```bash # 安装编译依赖 sudo yum install gcc gcc-c++ make openssl-devel # 下载最新源码包(以 3.28.6 为例) wget https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6.tar.gz # 解压并进入目录 tar -zxvf cmake-3.28.6.tar.gz cd cmake-3.28.6 # 配置、编译并安装(约需 10-30 分钟) ./bootstrap make -j$(nproc) # 使用所有 CPU 核心加速编译 sudo make install # 验证安装 cmake --version ``` --- ### **3. 验证是否修复** 无论选择哪种方法,最终运行以下命令验证: ```bash cmake --version ``` 若输出类似 `cmake version 3.xx.x` 的版本信息,则表示安装成功。 --- ### **4. 常见问题补充** #### **Q1:安装后仍提示 `command not found`?** - **原因**:手动编译安装时,默认路径为 `/usr/local/bin`,需确保该路径在 `PATH` 中。 - **修复**: ```bash # 临时生效 export PATH="/usr/local/bin:$PATH" # 永久生效(写入 ~/.bashrc 或 /etc/profile) echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ``` #### **Q2:`yum install cmake` 提示无可用包?** - **原因**:EPEL 仓库未启用或网络问题。 - **修复**: ```bash # 确保已安装 EPEL sudo yum install epel-release # 清理缓存并重试 sudo yum clean all sudo yum makecache ``` --- ### **5. 总结** - **优先尝试 `yum` 安装**:适合简单场景或对版本无要求。 - **需要高版本时手动编译**:步骤稍复杂,但能灵活控制版本。 - **注意权限**:安装系统级软件需使用 `sudo`。 完成后,即可正常使用 `cmake .. && make` 编译项目!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值