Date:        Thu, 12 Jun 2025 09:09:42 -0400
    From:        Chet Ramey <chet.ra...@case.edu>
    Message-ID:  <3ed55e81-00e3-4f91-8fdd-f7fba7bc9...@case.edu>


  | >    | That wouldn't have been backwards compatible, so I didn't add quote
  | >    | removal.
  | > Really, in what cases?   
  | In every case. If you don't perform quote removal and then you do, you're
  | not backwards compatible.

That would be meaningful only if it had been possible to use any of
the quoting characters in that place (the function name in a definition)
and it actually worked.

  | The question is whether or not there are any
  | functions out there using special characters, quoted or not, and I don't
  | know the answer to that.

I know, that prior to 5.3 (well, in 5.1 and 5.2 - I didn't test every
ancient version) it was impossible to use anything which needed quoting,
by quoting it, as simply putting any quote character in that position
generated a syntax error.  Try it for yourself, see if you can find an
example where quote removal on something that worked in 5.2 would
generate a different result.

That's a fairly good indication that no quoted characters exist in
function names in bash scripts "out there" anywhere, and even if not
that, more or less a guarantee that adding quote removal there can't
break anything (just generate less syntax errors).

  | In any event, this is a discussion that's way too late for bash-5.3.

That is perhaps a real problem, as the changes that have been made
in 5.3 will create backwards compat issues if and when you were ever
to decide to attempt to do this properly.

It would be better to revert all the changes related to what's allowed
in function names, than to go on allowing unquoted operator characters
to be embedded in them (before quote removal), that's just broken.

If it can't be fixed now, do nothing in this area in 5.3, and then do it
properly in 5.4 (or 6, or whatever comes next - even in a 5.3 patch perhaps).

kre


Reply via email to