内部命令和外部命令

内部命令:
    指的是集成在Shell里的命令,属于shell的一部分,系统中没有与命令单独对应的程序文件。只要shell被执行,内部命令就自动载入内存,用户可以直接使用。如cd命令等。
外部命令:
   考虑到运行效率等原因,不可能把所有的命令都集成在shell里,更多的Linux命令是独立于shell之外的,这些就称为外部命令。每个外部命令都对应了系统中的一个文件,而Linux系统必须要知道外部命令对应的程序文件所在的位置,才能由shell加载并执行这些命令。如cp、ls等都属于外部命令。
说明:
   外部命令的程序文件大都存放在/bin、/sbin、/usr/bin……这些目录里,Linux系统会默认将这些路径添加到一个名为PATH的变量里,执行“echo $PATH”命令可以显示出PATH变量里的保存的目录路径(路径之用“:”间隔)。
[root@localhost ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
每当要执行一个外部命令时,Linux系统就会先从PATH变量所保存的这些路径里去寻找命令所对应的的程序文件,只有找到了程序文件才能正确地去执行外部命令。这也就意味着,如果把一个外部命令所对应的程序文件删了,或者是存放外部命令程序文件的目录没有添加到PATH变量里,这些都会导致外部命令无法正常执行。当然对于我们目前而言,并不需要知道这些外部命令的具体位置,甚至不用刻意地去分辨一个命令到底是内部还是外部命令,因为它们的使用方法都是基本类似的。