`test` 是内置程序还是程序

2 bash

测试是内置的 shell 还是实际的程序?

bruce@Bruce:~$ type -a test
test is a shell builtin
test is /usr/bin/test
bruce@Bruce:~$

bruce@Bruce:~$ file /usr/bin/test
/usr/bin/test: ELF 64-bit LSB executable
bruce@Bruce:~$ 
Run Code Online (Sandbox Code Playgroud)

我的系统运行的是 Ubuntu 13.04 和 BASH 4.2.45(1)-release。

hek*_*mgl 8

对于我的第一种方法,似乎我并没有真正了解您的问题。将尝试进一步解释它......

尽管该程序test是 GNU coreutils 包的一部分,因此将随任何 GNU/Linux 系统一起交付,但它也被编译为bash大多数发行版中的内置程序。我猜这是为了提高性能,因为它不需要为每个条件语句启动一个子进程。毋庸置疑,如果系统中存在两者,shell 将使用内置命令来支持二进制文件。但是你可以调用:

/usr/bin/test ...
Run Code Online (Sandbox Code Playgroud)

...如果你想显式调用二进制文件。

进一步注意,这bash不是大多数系统上唯一的 shell,其他 shell 可能没有这个内置功能(dash例如)。还有一些系统甚至可能还没有bash安装。对于这种情况,有来自 coreutils 的二进制文件。


它很可能是您系统中的内置程序。要检查此类型:

help test
Run Code Online (Sandbox Code Playgroud)

如果你看到一个帮助页面,它是一个内置的

你也可以输入:

type -t test
Run Code Online (Sandbox Code Playgroud)

由此可见:

builtin 
Run Code Online (Sandbox Code Playgroud)

在我的系统上