I know bash tries very hard to keep new versions compatible with previous ones.
However they sometime introduced (minor, but still) breaking changes:
for exemple when we could no longer have : { foo }
# which now hangs
but instead had to have : { foo ;}
# ie have a ;
or a newline before the closing }
(not sure which version introduced that, it was more than 20 years ago ^^)
My question is : how to find out which other "breaking" changes occured along the whole history of bash updates?
{ foo }
is (and AFAIK always has been in bash) the{
keyword (which introduces a command group) followed by thefoo
command with}
as argument (and you'll need a}
closing keyword (in command position, so for instance following a;
or&
or newline) later to close the command group). Can you clarify what you mean by it hangs?}
in{ foo }
as an argument tofoo
as the Bourne or Korn shell did and as POSIX requires. That's mentioned in theCOMPAT
file from 2.0.