[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: extglob can be erroneously enabled in bash-5.2 through comsub nestin

From: Kerin Millar
Subject: Re: extglob can be erroneously enabled in bash-5.2 through comsub nesting
Date: Fri, 7 Oct 2022 00:58:43 +0100

On Thu, 6 Oct 2022 15:49:26 -0400
Chet Ramey <chet.ramey@case.edu> wrote:

> On 10/2/22 4:51 AM, Kerin Millar wrote:
> > $ declare -p BASH_VERSION
> > declare -- BASH_VERSION="5.2.0(1)-release"
> > $ BASH_COMPAT=50; shopt extglob; : $(: $(: $(:))); shopt extglob
> > extglob         off
> > extglob         on
> Thanks for the report. I've attached the patch I applied to fix this.

Thanks for the patch. It is probably sufficient for the downstream bug report 
to be closed. Unfortunately, it remains the case that the >=5.2-rc3 parser is 
buggy. Consider the following, as conducted using 5.2.2 with said patch applied.

$ declare -p BASH_VERSION
declare -- BASH_VERSION="5.2.2(1)-release"
$ [[ foo = $(: $(shopt extglob >&2)) ]]
extglob         off
$ shopt extglob
extglob         off
$ [[ foo = $(: $(shopt extglob >&2) ]]
> ^C
$ shopt extglob
extglob         on

Note that, within the second test, the comsub parentheses are deliberately 
imbalanced, causing bash to display the PS2 prompt and wait for further input. 
I then interrupt bash with ^C and check on the status of the extglob option, 
only to find that - yet again - it has been unexpectedly enabled.

This is perfectly reproducible, provided that those exact steps are carried out 
as shown. In particular, one cannot skip the first (syntactically correct) 
test, which must nest at least one comsub within another.

Kerin Millar

reply via email to

[Prev in Thread] Current Thread [Next in Thread]