https://savannah.gnu.org/support/?110745 https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00103.html Note that both documents make the claim that only interactive shells are affected. This is false, as is demonstrated below. $ bash -c '[[ ]]; echo fin'; echo $? 0 diff --git a/parse.y b/parse.y index 11b71d4..02b2af1 100644 --- parse.y +++ parse.y @@ -2899,7 +2899,7 @@ yylex () #if defined (YYERRCODE) && !defined (YYUNDEF) current_token = YYERRCODE; #else - current_token = YYerror; + current_token = YYUNDEF; #endif return (current_token); @@ -4156,7 +4156,9 @@ parse_comsub (qc, open, close, lenp, flags) shell_eof_token = ps.eof_token; expand_aliases = ps.expand_aliases; - /* yyparse() has already called yyerror() and reset_parser() */ + /* yyparse() has already called yyerror() and reset_parser(), so we set + PST_NOERROR to avoid a redundant error message. */ + parser_state |= PST_NOERROR; return (&matched_pair_error); } else if (r != 0)