Linux 出现command not found 错误解决

Linux 出现command not found 错误解决,第1张

在很多人学习Linux命令行,会经常遇到command not found 错误,出现上述错误主要有以下几种情况: 命令书写错误,如有些人将Windows命令与Linux命令搞错,如查看ip相关信息,Linux命令行应该为ifconfig 环境变量没有配置好,这里一般有两种解决方法,第一,可以切换到root用户执行命令,第二种,就是配置用户的环境变量,其指令如下: export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin ----------------------------分割线---------------------------- Linux命令找不到?(找不到命令) 这个问题其实很简单,如果你在终端输入一个命令,而系统提示你说命令没有找到(Command not found)的话,要么是因为你没有装相应的软件包,要么就是因为路径设置的问题。如果是因为软件包的问题,那没有别的好说的,安装相应的软件包就好了。而另外一种情况,则需要对用户的路径进行设置。这里针对普通用户和超级用户分开介绍,以 RedHat 些列为例。 一、普通用乎如果一些程序没有安装在系统默认的路径(ie /bin/, /usr/bin, /usr/local/bin/ )里面,这个时候普通用户想要调用这些命令,必须设定路径。方法很简单:以普通用户登录,然后在终端输入: vi ~/.bash_profile 会出现如下的内容:# .bash_profile export PATH此时,只要在export PATH前面加入自己的路径即可,例如我的修改后如下:[ www.linuxidc.com @localhost bin]$ cat ~/.bash_profile# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]then. ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:/usr/local/programs/crosstool/gcc-4.0.2-glibc-2.3.6/arm-linux-gnu/bin/export PATH 二、超级用户这里主要是一些用在系统管理上的命令,例如ifconfig, route等等, 他们位于/sbin, 或/usr/sbin/下。其实这些命令本身就没有任何问题,软件包早已安装完毕,路径设置也没有丝毫问题。而出现Command not found的原因在于:在终端使用su变成超级用户的时候没有将root的路径(环境)一起切换过来,从而导致身份虽然已经是root,但是工作的环境和路径依旧是普通用户的。这种问题的解决方法有两个,其一是按照(一)里面提到的,对普通用户的工作路径进行修改,但是这样比较麻烦。其二则简单的多,只要在使用su的时候在其后家上一个空格和”-“ ,即将su改为 su - 。这样就可以在成为root的同时将root的工作路径也一起切换过来了。如果你已经使用su变成了root,那也没有关系,只要在输入一下su - 就好了。 原文地址: http://www.linuxidc.com/Linux/2012-12/75632.htm

学习一下bash shell的alias命令就行了。

设置和取消别名命令alias和unalias

假设每天需要进入目录/home/user/var/log/backlogs/project查看日志,每天需要执行命令cd /home/user/var/log/backlogs/project。该命令有点长,难记,也容易输入错误,可以使用别名功能使其变短。alias是Bash的内置命令,用来定义别名,基本格式为:

alias 别名=值

例如,定义别名prjlog,让它等于一条进入固定目录的cd命令:

$ alias prjlog='cd /home/user/var/log/backlogs/project'

定义了别名prjlog之后,运行prjlog就可以进入目录,无需再输入参数很长的cd命令。

运行alias或者alias -p,可以列出(print)当前所有的别名。下面列出某台Linux机器默认的别名:

$ alias -p

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias l='ls -CF'

alias la='ls -A'

alias ll='ls -alF'

alias ls='ls --color=auto'

可见别名l等于ls -CF,运行l就相当于运行ls -CF。下面运行l试试:

$ l

1.q a.txt Documents/ kkk/ Public/ sy3.bash* tmp/

777* b_ln2.txt Downloads/ mmm.txt samba_log@ sy4.txt Videos/

9999@ b.txt env2.txt Music/ set.txt sy4.txt_ln z.txt

A.h Desktop/ examples Pictures/ sy2.bash* Templates/

顺便解释一下上面的输出。上面以列的形式显示当前目录的内容,尾部为/的表示它是目录,为*的表示它是可执行文件,为@的表示它是符号链接。运行man ls,查看ls命令的有关选项-C和-F的帮助就清楚了。

运行alias加上一个别名的名字,可以查看该别名的定义,例如:

$ alias l

alias l='ls -CF'

运行alias加上一个并未定义为别名的名字,将得到该别名未找到的提示,例如:

$ alias abc

bash: alias: abc: not found

内置命令unalias用来删除别名。取消前面已经定义的别名prjlog,再查看它,发现该别名没有定义了:

$ unalias prjlog# 取消别名prjlog

$ alias prjlog # 查看别名定义

bash: alias: prjlog: not found # 该别名定义已不存在

命令unalias -a用来删除所有的别名定义。

你输入的命令: 1 分号 2c 回车

代表先执行命令 1 此时不输出 再执行命令 2c 然后一起输出

显然你系统里没有1 与2c 这2个命令(你没有为它们设置别名)

那么当然显示出错信息 : -bash 命令没被发现

建议你先找本基本命令教程看看。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7483923.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-06
下一篇2023-04-06

发表评论

登录后才能评论

评论列表(0条)

    保存