查看命令为内置命令还是外部命令---type

       有木有 ? 有的用户在用一般用户身份执行ifconfig eth0  会出现“-bash: ifconfig :command not found ”的字样,因为ifconfig这个命令是放置在/sbin目录下的,你可以通过echo $PATH 命令查看你当前用户的PATH中并没有设置/sbin目录,所以无法执行。

        因为ifconfig是外部命令,执行它时,系统会依照PATH寻找每个目录查询文件名为ifconfig的可执行文件,如果PATH中含有关于其的可执行文件,那么它就会顺利执行,相反就会“-bash:fconfig :command not found ”。

        为了方便shell的操作,其实bash内置了很多命令,如:cd ,umask, type....,它们都是内置在bash中的。那我们如何怎么知道一个命令是外部命令还是内置命令呢?

       type的用法架构:

type [options] command

options:

如果不加任何参数时,会显示command为外部命令还是内部命令

-t :当加入-t时,其结果会出现这些字眼:

       file:    表示为外部command;

       alias: 表示其为命令别名所设置的别名;

       builtin:表示其为bash内置command

-p:如果你的command是外部命令时,它才会显示完整的文件名;否则  不显示任何字符。

-a :会有PATH变量定义的路径,将所有的关于command这个命令的都列出来,包含alias。

范例一:

#type cd

cd  is a shell builtin      《===未加任何参数,显示的结果

#type  -t  ls

alias

#type   -t  cd

builtin

#type -t mkdir

file

#type  -a  ls

ls  is  aliased to `ls  --color ==tty`

ls is /bin/ls

#type  -a  cat

cat is /bin/cat

对号入座,参考上面的参数介绍,再上机运行下相信你对判断外部命令还是内置命令掌握的就OK了。

 看到最后的人加额外的奖励哦:

记不记得刚你刚看到的那个用一般用户可能你没法执行ifconfig这个命令,其实有两种解决方法了:

1:将ifconfig命令的路径加到你用户的PATH中去。

PATH=“$PATH”: /sbin

2:你可以使用绝对路径的方法

/bin/ifconfig eth0

好啦,看完就可以休息,休息一会儿啦!

------参考书

鸟哥的Linux私房菜