Running this script with your own bash path demonstrates the bug.

#!/home/ian/opt/bash/bash --norc
shopt -s extglob
shopt -s dotglob
cd $(mktemp -d)
mkdir a
touch a/.b
touch a/c
echo a/!(.b)

output:
a/. a/.. a/c

this happens with all bash versions 4.3+ (latest is patch 18).
before that, the output is:

a/c

Another related bug. man bash states:

The file names ``.''  and ``..''  are always ignored
       when GLOBIGNORE is set and not null.

Which clearly implies that . and .. should not be ignored in some other
case. Well, that was not true before 4.3, but I'm guess this new
behavior is a bug, and the doc is a bug, since the doc hasn't changed,
and setting GLOBIGNORE doesn't actually make . and .. be ignored.

Reply via email to