外部命令
外部命令,有时候也被称为文件系统命令,是存在于bash shell之外的程序。外部命令程序通常位于/bin、/usr/bin、/sbin或/usr/sbin中。外部命令需要使用子进程来执行。
ps就是外部命令。你可以使用which和type命令找到它。
which ps #which命令只显示出了外部命令文件
/bin/ps
type -a ps #显示出每个命令的两种实现
ps is /bin/ps
ls -l /bin/ps
-rwxr-xr-x 1 root root 133432 5月 14 2018 /bin/ps
当外部命令执行时,会创建出一个子进程。这种操作被称为衍生(forking)
内部命令
内部命令不需要使用子进程来执行,不需要借助外部程序文件来运行。
type command-line 可以查看是否内部命令
type cd
cd is a shell builtin
type exit
cd is a shell builtin
有些命令有多种实现。例如echo和pwd既有内建命令也有外部命令。两种实现略有不同。要查看命令的不同实现,使用type的命令的-a选项。
type -a echo
echo is a shell builtin
echo is /bin/echo
which echo #which只显示出了外部命令文件
/bin/echo