1.什么是build in命令:
shell内建命令是指bash(或其它版本)工具集中的命令。一般都会有一个与之同名的系统命令,比如bash中的echo命令与/bin/echo是两个不同的命令,尽管他们行为大体相仿。当在bash中键入一个命令时系统会先看他是否是一个内建命令,如果不是才会查看是否是系统命令或第三方工具。所以在bash中键入echo命令实际上执行bash工具集中的bash命令也就是内建命令,而不是/bin/echo这个系统命令。
2.内建命令与系统命令
内建命令要比系统论命令有比较高的执行效率。外部命令执行时往往需要fork出(产生出)一个子进程,而内建命令一般不用。下面(或许以后还会有)这一篇文章将介简bash的内建命令。
3.查看一个命令是系统命令还是内建命令:type
[email protected]:~/Documents
$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
[email protected]:~/Documents
$ type -a echo
echo is a shell builtin
echo is /bin/echo
可以看出,有些命令,echo和pwd同时是内建命令和系统命令。
4.常见命令的类型
[[email protected] ~]# type -a cd
cd is a shell builtin
[[email protected] ~]# type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
[[email protected] ~]# type -a time
time is a shell keyword
time is /usr/bin/time
[[email protected] ~]# type -a date
date is /bin/date
[[email protected] ~]# type -a which
which is aliased to `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
which is /usr/bin/which
[[email protected] ~]# type -a whereis
whereis is /usr/bin/whereis
[[email protected] ~]# type -a whatis
whatis is /usr/bin/whatis
[[email protected] ~]# type -a function
function is a shell keyword
[[email protected] ~]# type -a ls
ls is aliased to `ls --color=tty‘
ls is /bin/ls
[[email protected] ~]# type -a ll
ll is aliased to `ls -l --color=tty‘
[[email protected] ~]# type -a echo
echo is a shell builtin
echo is /bin/echo
[[email protected] ~]# type -a bulitin
-bash: type: bulitin: not found
[[email protected] ~]# type -a builtin
builtin is a shell builtin
[[email protected] ~]# type -a keyword
-bash: type: keyword: not found
[[email protected] ~]# type -a command
command is a shell builtin
[[email protected] ~]# type -a alias
alias is a shell builtin
[[email protected] ~]# type -a grep
grep is /bin/grep
[[email protected] ~]#