Não é /usr/bin/[
em nenhum dos shells. No Bash, você está usando o comando test
/ [
incorporado e similarmente em zsh .
A diferença é que zsh também tem uma expansão =
: =foo
se expande para o caminho para o executável foo
. Isso significa que ==
é tratado como tentativa de localizar um comando chamado =
em seu PATH
. Como esse comando não existe, você recebe o erro
zsh: = not found
que você viu (e, de fato, a mesma coisa aconteceria mesmo se você realmente estivesse usando /usr/bin/[
).
Você pode usar ==
aqui, se você realmente quiser. Isso funciona como você esperava no zsh:
[ "a" "==" "a" ] && echo yes
porque a cotação impede a execução de =word
em execução. Você também pode desativar a opção equals
com setopt noequals
.
No entanto, você estaria melhor: