man bash より抜粋。
... string1 == string2 string1 = string2 True if the strings are equal. = should be used with the test command for POSIX conformance. ...bash 組み込みの help だと、man のような記述はありませんでした。
[root@hoge ~]# help test test: test [expr] Evaluate conditional expression. ... -n STRING STRING True if string is not empty. STRING1 = STRING2 True if the strings are equal. STRING1 != STRING2 True if the strings are not equal. ...なお、test コマンド(bash 組み込みではないほう)の man だと記述はありませんが、== も受け付けるようです。
... -z STRING the length of STRING is zero STRING1 = STRING2 the strings are equal STRING1 != STRING2 ...
[root@hoge ~]# /usr/bin/test "a" == "b" ; echo $? 1 [root@hoge ~]# /usr/bin/test "a" == "a" ; echo $? 0 [root@hoge ~]# /usr/bin/[ "a" == "a" ] ; echo $? 0 [root@hoge ~]# /usr/bin/[ "a" == "b" ] ; echo $? 1 [root@hoge ~]# ls -li /usr/bin/test /usr/bin/[ 2296639 -rwxr-xr-x. 1 root root 41496 Nov 6 2016 /usr/bin/[ 2296722 -rwxr-xr-x. 1 root root 37328 Nov 6 2016 /usr/bin/test [root@hoge ~]# rpm -qlv coreutils | egrep "/usr/bin/(\[|test)" -rwxr-xr-x 1 root root 41496 Nov 6 2016 /usr/bin/[ -rwxr-xr-x 1 root root 37328 Nov 6 2016 /usr/bin/testちなみに、/usr/bin/test と /usr/bin/[ の実体は同じかと思ってたのですが、ls -li の結果は食い違ってました。いったい何なんだろう。環境は CentOS7 。