Linux 上找不到命令的四種解決方法,大部分新手都踩過的坑
對于一些新手而言,經常會遇到 提示命令找不到的情況??赡軙袔追N情況,咱們接下來將展開講一下。
1. 命令打錯了?
這真不是玩笑!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發行版本的命令,你用錯了。