Linux判断内部外部命令
Linux判断内部外部命令详细介绍
在 Linux 中,判断一个命令是 内部命令(Shell Builtin) 还是 外部命令(External Command),可以通过以下几种方法:
方法 1:使用 type 命令
type 命令可以显示命令的类型,明确标识是否为内部命令:
- 内部命令:输出包含
shell builtin(或builtin)。
示例:bash - 外部命令:输出命令的绝对路径(即存储位置)。
示例:bash
方法 2:使用 which 命令
which 命令用于查找外部命令的路径:
- 内部命令:
which无法找到,无输出(或提示找不到)。
示例:bash - 外部命令:输出命令的绝对路径。
示例:bash
方法 3:查看命令是否存在独立可执行文件
外部命令本质上是独立的可执行文件,通常位于以下目录中:
/bin/:系统基本命令(如ls,cp,mv)。/usr/bin/:用户级命令(如nano,wget,git)。/sbin/:系统管理命令(如shutdown,reboot,需管理员权限)。/usr/sbin/:管理员级命令(如useradd,apache2)。
而内部命令没有独立的可执行文件,仅由 Shell 解释器直接支持(如 cd, echo, exit)。
方法 4:使用 help 命令(仅内部命令有效)
内部命令的帮助信息可以通过 help 命令直接查看:
bash
外部命令的帮助需通过 --help 或 man 命令查看:
bash
补充:列出所有内部命令
在 Bash 中,可以通过 builtins 命令列出所有内置命令:
bash
builtins
总结对比
| 特征 | 内部命令(Shell Builtin) | 外部命令(External Command) |
|---|---|---|
| 执行方式 | 由 Shell 直接解释执行,无需加载文件 | 需要加载磁盘上的可执行文件 |
type 命令结果 |
包含 shell builtin 或 builtin |
显示文件路径(如 /usr/bin/ls) |
which 命令结果 |
无输出(或提示找不到) | 显示文件路径 |
| 独立可执行文件 | 不存在 | 存在于 /bin/, /usr/bin/ 等目录中 |
| 帮助命令 | help 命令 |
命令 --help 或 man 命令 |
通过以上方法,可快速判断一个命令是内部还是外部命令。例如:
cd是内部命令(切换目录无需可执行文件,由 Shell 直接处理)。ls是外部命令(对应/usr/bin/ls可执行文件)。