Linux 上找不到命令的四种解决方法,大部分新手都踩过的坑
对于一些新手而言,经常会遇到 提示命令找不到的情况。可能会有几种情况,咱们接下来将展开讲一下。
这真不是玩笑!80% 的 Linux 小白都因为打错命令而慌了神。
Linux是区分大小写的,大小写敏感的:
[root@k8s-master ~]# Grep root /etc/passwd
-bash: Grep: command not found
# 正确写法
[root@k8s-master ~]# grep root /etc/passwd
还可能因为手抖多打/少打一个字符,比如:
[root@k8s-master ~]# yum installl nginx
Loaded plugins: fastestmirror
No such command: installl. Please use /usr/bin/yum --help
# 正确写法
yum install nginx
建议安装自动补全插件:对于一些命令较长记得费劲,可以安装补全插件,使用tab进行补全,非常方便。
yum install bash-completion
2. 命令可能根本没安装对于最小化安装的系统,有些软件包并没有安装,即使命令敲对了,也会出现命令找不到的情况。
你要做的就是:安装它!
yum install 软件包名
3. 命令在哪个包里你可能还会遇到另一种情况,我要用的命令并不是软件包名,install说找不到。
比如我想用nslookup命令,我直接install显示找不到该安装包:
[root@k8s-master ~]# yum install nslookup
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
No package nslookup available.
Error: Nothing to do
这种情况怎么处理?
很简单,使用provides参数。
处理思路:先找到属于哪个软件包,然后再安装:
# 先找出nslookup属于哪个软件包
# 这条命令会遍历所有可用的Yum仓库,是否存在
[root@k8s-master ~]# yum provides */nslookup
....
32:bind-utils-9.11.4-26.P2.el7_9.16.x86_64 : Utilities for querying DNS name servers
Repo : updates
Matched from:
Filename : /usr/bin/nslookup
# 找到软件包后,直接安装
[root@k8s-master ~]# yum install -y bind-utils
安装完成后就可以使用nslookup命令了:
[root@k8s-master ~]# nslookup
>
4. 环境变量不包含命令路径还有一种情况找不到命令是没在环境变量PATH中。
系统只在 PATH 里的目录中查找命令。
# 查看PATH变量
[root@k8s-master ~]# echo $PATH
/data/istio-1.23.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
比如你源码编译安装了一个nginx,但没有放在PATH相关的路径下,你直接执行nginx -v 是找不到命令的。解决办法就是将部署路径加入到PATH环境变量中。
例如你将nginx源码编译的位置是/data/nginx:
# 例如你将nginx加入到环境变量中
vi /etc/profile
export PATH=$PATH:/data/nginx/sbin/
让配置立即生效:
source /etc/profile
当然,你也可以不用写入环境变量,直接用完整路径也是可以的,只是有了环境变量就可以不用写完整路径:
/data/nginx/sbin/nginx -v
99%的command not found问题,都能通过本文彻底解决。还有一种可能就是根本没有这个命令,或是其他Linux发行版本的命令,你用错了。
阅读剩余
THE END