Linux | 终端显示为bash-4.1$以及提示bash:command not found的解决方法

本文总结如何解决 Linux 终端显示为 bash-4.1 1 以及提示 bash: command not found 情形 23 的解决方法。

Updated: 2022 / 7 / 18



bash: command not found

问题描述

我们在使用 linux 开发编译的时候可能会遇到:

  1. 前几次还好用的命令,这次再输入就出现 -bash: ***: command not found 的情况;
  2. 第一次使用就出现 -bash: ** : command not found 的情况;

导致这种问题的原因有很多(就像导致肚子疼痛的原因各种各样),有可能是环境变量配置问题,也可能某一个 bin 文件夹下的内容全部删除导致等,所以现在将主要导致bash:command not found 的原因写在下面,希望对大家的开发过程有帮助。


解决方法

检查该命令工具是否安装

出现这个问题时,首先用 whereis 命令确定该指令工具是否安装,例如可以使用 whereis gcc 来确认是否已安装,如果此时显示 gcc:/usr/bin/gcc 则说明已经安装好,可以接着用下面的方法继续找原因,如果只是显示 gcc:,则说明 gcc 没有下载,此时进行下载就可以。

CentosRehat 系列)系统下载 gcc 命令:yum install gcc
Ubuntu 系统下载 gcc 命令:apt-get inatall gcc


检查各个 bin 文件夹的内容是否非空

在使用其它相对更复杂的手段“还原”到之前好用的状态之前,应该先检查的 bin 文件夹里的命令是否都在,这个方法最简单也最直观。
如果自己需要用到的命令所在的 bin 文件夹为空,那么就会理所应当的出现 -bash: ***: command not found 情况。

要检查的bin文件夹有以下几个:/bin , /usr/bin, /sbin, /usr/sbin。查看这四个里面的是否为空,若出现为空的情况,那么解决办法就是找一个同样系统版本的 linux 把对应文件夹的内容复制到本地空的 bin 文件夹中。

例如我的 linux 版本是 CentOS release 6.8,我输入 gcc 命令编译的时候出现 bash: gcc: command not found,通过查看四个目录发现其中 /usr/bin 内容为空,然后自己通过将同样的 CentOS release 6.8 系统下的 /usr/bin 内容全部复制到本地的 /usr/bin 中,然后再次 gcc 编译,通过。

注意,这种排查方法适用在输入类似 lstty 这种常见指令以前可用但最近出现 not found 的情况。


检查是否是 $PATH 设置是否正确

$PATH 决定了 shell 到哪些目录下去寻找命令或工具,PATH 的值是一系列目录,当程序运行时,Linux 系统会到这些目录下进行搜索,所以当出现 -bash: ** : command not found 可能因为是 PATH 没有设置或者系统PATH设置有问题,系统就无法找到精确命令了。

  1. 在命令行中输入 export PATH=/usr/bin:/usr/sbin:/bin:/sbin 这样可以保证命令行命令暂时可以使用。命令执行完之后先不要关闭终端;

  2. 在命令行中输入 vi /etc/profile 或者 usr/bin/vi /etc/profile 来查看是否自己另外设置了PATH 属性。
    vi 编辑器中输入目标 $PATH

PATH 设置格式

PATH = $PATH:<PATH1>:<PATH2>:<PATH3>:...:<PATH N>

可以将自己指定的路径加到 PATH 中(见上,若有多个变量路径则在中间用冒号 : 隔开),例如 export PATH=/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH ,设置成功之后,使用echo 查看是否配置成功:

[root@localhost u-boot-sh4]# echo $PATH
/opt/STM/STLinux-2.3/devkit/sh4/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

上述方法添加 PATH 在终端关闭后会消失。
建议通过 vi /etc/profile 修改 PATH,也可修改主用户目录下的 .bashrc,这样可以永久生效。

若使用前一种方法,则输入指令 vi /etc/profile,然后在该文件最后添加:

export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"

保存后,退出,再执行:

[root@localhost etc]# source /etc/profile

不报错就成功。

  1. 关闭终端,重新打开终端,输入命令执行,OK,全部正常!

当然,可能还有其它原因导致 bash:command not found,这时候就需要在网上仔细找,把导致该问题的前因后果都说清楚(配置了什么,删掉了什么),相信问题最后一定能解决。


bash-4.1$

问题描述

Centos 中由 root 切换普通用户 shell 显示的是 bash-4.1$,现象如下:

在这里插入图片描述

解决方法

  1. 打开 ~/.bash_profile 文件
[root@localhost opt]#  vim ~/.bash_profile
  1. 添加 export PS1='[\u@\h \W]\$' 至尾行;

    在这里插入图片描述

  2. 执行 source ~/.bash_profile,使其生效

    在这里插入图片描述


参考链接


  1. [Centos中root用户切换普通用户shell显示bash-4.1$解决办法](https://blog.csdn.net/finghting321/article/details/102956416 ↩︎

  2. Linux下提示bash:command not found解决方法小结 ↩︎

  3. Centos命令行报bash:…:command not found的解决办法 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值