今天老蒋有在调试Dnsmasq创建本地DNS服务器的时候有需要用到dig命令测试效果,但是默认Linux系统中好像没有安装dig支持组件。于是有错误提示"-bash: dig: command not found"。
快速解决"dig: command not found"问题
主要问题是默认系统中缺少bind-utils工具包导致的,我们直接yum安装看看呗。
yum -y install bind-utils
这样,我们在安装工具包之后,再去dig命令就没有任何问题。
command not found各种情况解决方案
问题一
如果新装的系统,运行一些很正常的诸如: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
问题二:
问题是在root权限下无法使用shutdown -h now ,提示command not found !!
这是基础命令 , 原以为是对方没有root权限.不过之后他截图给我看了下发现的确是# , 而且命令也没有语法错误 , 有点莫名其妙的感觉................
后来一直在找解决的方法和问题所在! 最终还是给我找到了...答案如下::
-------------------------------------------------------------------------------------
使用linux过程中,发现一个问题,当我使用su命令成为超级用户的时候,使用管理系统的一些命令,例如shutdown时,会给我一个"bash:shutdown:command not found".根据解决问题的一般思路:
首先这个命令是一定存在的,现在找不到,估计是寻找的路径不对,我首先查看了一下,shutdown的命令位置:/sbin/shutdown,然后是超级用户的搜索路径:(可以通过环境变量得到)
env:
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/xishan/bin
切换到root用户后,我看了下root用户的环境变量:
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/ bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
对比很明显,su的超级用户的环境变量差别很大,怎么才能得到root的环境变量呢?
是不是su有其他用法,man su ,看了,果然,
su [OPTION] ...[-] [USER [ARG]...]
-,-l, --login
make the shell a login shell
应该是su - root / su -l /su --login 才能作为root用户登陆
问题得到解决了。
但是我以前用过NETBSD系统,使用su命令的时候,也可以使用shutdown的,而不用其他命令,这两个系统内核都差不多,应该可以通过修改环境变量达到目的吧?
vi ~/.bashrc
增加了一条 export PATH=$PATH:/sbin
重新启动之后,通过su命令,进入到超级用户,然后察看了一下环境变量,
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/xishan/bin:/sbin
增加成功,然后测试了一下:shutdown ,OK,下次直接使用su即可了。