回答:
ソースコードは、それがどのように処理するかであるとして違いを説明して--help
オプションを選択します。
/* Recognize --help or --version, but only when invoked in the "[" form, when the last argument is not "]". Use direct parsing, rather than parse_long_options, to avoid accepting abbreviations. POSIX allows "[ --help" and "[ --version" to have the usual GNU behavior, but it requires "test --help" and "test --version" to exit silently with status 0. */
デモンストレーション
$ /usr/bin/test --help
$
$ /usr/bin/[ --help
Usage: test EXPRESSION
or: test
or: [ EXPRESSION ]
or: [ ]
or: [ OPTION
Exit with the status determined by EXPRESSION.
[...]
あなたが言ったように、bash
組み込みバージョンでは、唯一の違いは最後に[
必要な]
ことです。
通常、これらはハードリンクを含む同じバイナリです。シェルによっては、バイナリではなく内部実装を使用しtest
て[
テストする場合があります。これは、プロセスの生成に関してより効率的であり、バイナリプログラムが提供するものとは異なるオプションを提供する場合がありtest
ます。
呼び出し形式の違いを除き、どちらも同じ機能を提供します。