1. 外建命令,首先会fork一个子进程,在子进程中执行cd,只改变子进程的当前工作目录
2. 内建命令,在当前shell进程中执行,改变当前目录
例如:a.sh
#!/bin/sh
cd /home
ls
1. sh a.sh, 只改变子进程工作目录
2. source a.sh, 改变当前工作目录,并执行ls
用户在命令行输入命令后,一般Shell会fork并exec该命令,但是内建命令除外。执行内建命令相当于调用Shell的一个函数,并不创建新的进程。
比如:cd、alias、umask、exit等命令即是内建命令。
凡是用which命令查不到程序文件所在位置的命令都是内建命令
内建命令没有单独的man手册,要在man手册中查看内建命令,应该man bash-builtins
内建命令虽然不创建新的进程,但也会有Exit Status,通常也用0表示成功非零表示失败,可以用特殊变量$?读出