一. 内部命令
Linux 命令有内部命令 (内建命令) 和外部命令之分, 内部命令和外部命令功能基本相同, 但也有些细微差别. 内部命令不需要使用子进程来执行, 它们已经和 shell 编译成一体, 作为 shell 工具的组成部分存在. 不需要借助外部程序文件来运行. 它们是一些比较简单的 linux 系统命令, 如 exit,history,cd,echo 等.
要分区是外部命令还是内部命令可以使用 type 来查看, 如下图查看 cd 是内部还是外部命令:
1.1 命令别名
alias 命令也是一个内建命令, 允许你为常用的命令和参数创建另一个名称, 从而减少输入. 在系统中已经设置好了一些常用的命令的别名. 查看当前可用的别名使用 alias -p 如下图所示:
下面通过 alias 命令来创建属于自己的别名. 把 ls -li 长列表命令参数改别名为 li.
一但定义好了别名就可以随时在 shell 中使用, 但要注意的是只有在当前进程中才有效. 下面演示在子 shell 中使用别名无效, 只有退出子 shell 才行.
二. 外部命令
外部命令是存在于 bash shell 之外的程序, 它们不是 shell 程序的一部分, 外部命令程序通常位于 / bin, /usr/bin, /sbin, /usr/sbin 中. ps 就是一个外部命令, 使用 type 查看如下所示:
所有外部命令都会被一个子进程来执行. ps 的父进程是 bash shell PID 2486, 如下所示:
2.1 使用 type 的小技巧
当命令是外部命令时, type 还会显示外部命令所在路径, 如下图, 查看 service 和 ps 的路径:
根据路径提示, 可以找到命令所在目录, 如找 service 命令如下所示:
总结: 这篇介绍的两种不同类型的命令: 内部命令和外部命令. 外部命令会创建出一个包含全新环境的子进程, 而内部命令则不会.
来源: https://www.cnblogs.com/MrHSR/p/9650305.html