经常遇到"bash:xxxx:command not found"这样的问题,用root用户也不行,在网上查阅了此问题,解决方法如下:
原文1.http://hi.baidu.com/jinjun8505/blog/item/e2c5dd8d9b1998f3f01f36e3.html
原本使用ifconfig 可以使用,今天是怎么了,可能安装软件修改了,百度~~
[oracle@localhost /]$ ifconfig
提示:“bash: ifconfig: command not found”
于是我切换到root用户下
[root@localhost /]$ ifconfig
依然提示:“bash: ifconfig: command not found”
分析问题
1.whereis ifconfig 看一下这个命令在哪个目录下
2.echo $PATH 看一下该目录是否在路经下,注意linux下是完全区分大小写的,所以不要忽略这点
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 not found”,原因非root用户的path中没有/sbin/ifconfig
,其它的命令也可以出现这种情况,解决的方法是一样的。
原文2 http://www.cnblogs.com/cninfochina/articles/2171545.html
如果新装的系统,运行一些很正常的诸如:shutdown,fdisk的命令时,悍然提示:bash:command not found。那么,首先就要考虑root 的$PATH里是否已经包含了这些环境变量。
主要是这四个:/bin ,/usr/bin,/sbin,/usr/sbin。
四个主要存放的东东:
/bin:
bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。
/usr/bin:
主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。
/sbin:
主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。
/usr/sbin:
放置一些网路管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
可以在家目录下查看.bash_profile里的PATH。如果是:PATH=$PATH:$HOME/bin则需要添加成如下:
PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
网上的解释:
一般我们敲一个命令的时候,系统会到path变量指定的目录中去寻找的,在Linux系统下默认有那么几个可执行文件的目录,一般可执行文件的目录都叫 bin,我们一般在根目录下面有个/bin 和一个/sbin 这两个目录都是存放一些可执行文件或者说是命令的!把这两个目录放到PATH变量里边,系统就会去这连个目录中寻找,而/sbin目录是只有超级用户才能使用的执行文件路径,init这个命令又放在/sbin下面所以普通用户的PATH没有/sbin这个路径也就会出现上面的提示,如果你想用但你只是设置下你的PATH变量也不好使的,因为/sbin目录下面的还有个权限的问题,你先用root用户给那些执行文件赋予你普通用户权限,然后你用普通用户登录,要么把自己的PATH变量里加上一行,要么直接进入/sbin目录执行init命令!
原文1.http://hi.baidu.com/jinjun8505/blog/item/e2c5dd8d9b1998f3f01f36e3.html
原本使用ifconfig 可以使用,今天是怎么了,可能安装软件修改了,百度~~
[oracle@localhost /]$ ifconfig
提示:“bash: ifconfig: command not found”
于是我切换到root用户下
[root@localhost /]$ ifconfig
依然提示:“bash: ifconfig: command not found”
分析问题
1.whereis ifconfig 看一下这个命令在哪个目录下
2.echo $PATH 看一下该目录是否在路经下,注意linux下是完全区分大小写的,所以不要忽略这点
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 not found”,原因非root用户的path中没有/sbin/ifconfig
,其它的命令也可以出现这种情况,解决的方法是一样的。
原文2 http://www.cnblogs.com/cninfochina/articles/2171545.html
如果新装的系统,运行一些很正常的诸如:shutdown,fdisk的命令时,悍然提示:bash:command not found。那么,首先就要考虑root 的$PATH里是否已经包含了这些环境变量。
主要是这四个:/bin ,/usr/bin,/sbin,/usr/sbin。
四个主要存放的东东:
/bin:
bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。
/usr/bin:
主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。
/sbin:
主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。
/usr/sbin:
放置一些网路管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
可以在家目录下查看.bash_profile里的PATH。如果是:PATH=$PATH:$HOME/bin则需要添加成如下:
PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
网上的解释:
一般我们敲一个命令的时候,系统会到path变量指定的目录中去寻找的,在Linux系统下默认有那么几个可执行文件的目录,一般可执行文件的目录都叫 bin,我们一般在根目录下面有个/bin 和一个/sbin 这两个目录都是存放一些可执行文件或者说是命令的!把这两个目录放到PATH变量里边,系统就会去这连个目录中寻找,而/sbin目录是只有超级用户才能使用的执行文件路径,init这个命令又放在/sbin下面所以普通用户的PATH没有/sbin这个路径也就会出现上面的提示,如果你想用但你只是设置下你的PATH变量也不好使的,因为/sbin目录下面的还有个权限的问题,你先用root用户给那些执行文件赋予你普通用户权限,然后你用普通用户登录,要么把自己的PATH变量里加上一行,要么直接进入/sbin目录执行init命令!