在 Linux/Unix 中如何修复 bash:command not found 的错误

假设错误如下:

# useradd jack
-bash: useradd: command not found

提示 useradd: 命令未找到。

当该命令的路径变量未定义时,通常会发生这种情况。
因此,在这种情况下,我们必须手动定义路径变量。
此错误与命令无关,因此无论何时遇到此问题,请检查命令的位置并将完整路径添加到 PATH 变量。

我们可以使用几种方法来查找丢失命令的位置

方法一

使用下面命令查找丢失的命令

# whereis useradd
useradd:/usr/sbin/useradd /usr/share/man/man8/useradd.8.gz

方法二

我们也可以使用以下命令,但这可能不会一直有效,因为最终此命令使用的是 .bash_profile 和 .bashrc 来保存所有可执行文件的所有 PATH 变量

# which useradd
/usr/sbin/useradd

方法三

我们最终可以使用 find 命令来查找丢失的命令或者文件(因为所有命令都是可执行文件)

# find/-name useradd -type f
/usr/sbin/useradd

找到命令的位置后,将其路径添加到 PATH 变量

# export PATH=/usr/sbin:$PATH

但是这只在当前会话中生效,因此一旦更改了会话,我们将不得不再次export新的 PATH 变量

要在机器中进行永久性更改,请将此命令添加到 .bash_profile 文件

# vi /root/.bash_profile
export PATH=/usr/sbin:$PATH

所以现在每次系统重新启动时都会执行这个命令并且 PATH 变量会被更新。

永久修复:

永久修复此问题,以免再次出现此问题。
我们可以在 PATH 变量中添加所有目录的默认位置,该变量包含 .bash_profile 文件中的 Red Hat Linux 中的所有可执行文件。

export PATH=$PATH:/usr/bin:/usr/sbin:/usr/local/bin:/usrlocal/sbin
日期:2020-06-02 22:16:47 来源:oir作者:oir