经常遇到"bash:xxxx:command not found"这样的问题,用root用户也不行,在网上查阅了此问题,解决方法如下:


原本使用ifconfig 可以使用,今天是怎么了,可能安装软件修改了,百度~~
[oracle@localhost /]# ifconfig
提示:“bash: ifconfig: command not found”

于是我切换到root用户下
[root@localhost /]# ifconfig
依然提示:“bash: ifconfig: command not found”

分析问题
1.whereis ifconfig 看一下这个命令在哪个目录下

2.echo $PATH 看一下该目录是否在路经下,注意lunux下是完全区分大小写的,所以不要忽略这点

3.执行命令,需要指定路径或者把目录加入PATH中

4.于是可以这样访问
方法一:[root@localhost sbin]# /sbin/ifconfig 就可以出现使用了
方法二:[root@localhost sbin]# export PATH=$PATH:/sbin,这样设置后,下次就可以直接访问了,免处第一种的麻烦,如:
[root@localhost /]# ifconfig

方法三:修改/etc/profile文件,注释掉if语句即可
把下面的if语句注释掉:
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi
修改为
# Path manipulation
# if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
#fi

注:不光是ifconfig命令出现“bash: ifconfig: command notfound”,原因非root用户的path中没有/sbin/ifconfig
,其它的命令也可以出现这种情况,解决的方法是一样的。





网上的解释:

一般我们敲一个命令的时候,系统会到path变量指定的目录中去寻找的,在Linux系统下默认有那么几个可执行文件的目录,一般可执行文件的目录都叫 bin,我们一般在根目录下面有个/bin 和一个/sbin 这两个目录都是存放一些可执行文件或者说是命令的!把这两个目录放到PATH变量里边,系统就会去这连个目录中寻找,而/sbin目录是只有超级用户才能使用的执行文件路径,init这个命令又放在/sbin下面所以普通用户的PATH没有/sbin这个路径也就会出现上面的提示,如果你想用但你只是设置下你的PATH变量也不好使的,因为/sbin目录下面的还有个权限的问题,你先用root用户给那些执行文件赋予你普通用户权限,然后你用普通用户登录,要么把自己的PATH变量里加上一行,要么直接进入/sbin目录执行init命令!