bug-bash
[Top][All Lists]
Advanced

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

. and .. are included where they were excluded before


From: gregrwm
Subject: . and .. are included where they were excluded before
Date: Mon, 25 Jan 2021 15:36:06 -0600

Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -g -O2 -fdebug-prefix-map=/build/bash-a6qmCk/bash-5.0=.
-fstack-protector-strong -Wformat -Werror=format-security -Wall
-Wno-parentheses -Wno-format-security
uname output: Linux e540 5.4.0-60-generic #67-Ubuntu SMP Tue Jan 5 18:31:36
UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu

Bash Version: 5.0
Patch Level: 17
Release Status: release

Description:
        . and .. are excluded from @(?|.?) in
        bash 4.2.46(2)-release (CentOS 7.8), but are included in
        bash 4.4.19(1)-release (CentOS 8.2) and
        bash 5.0.17(1)-release (Ubuntu 20.04/focal).

        is this change in functionality a regression, a "fix", or a new
feature?
        is there any option to exclude them?

        in all 3, .. is included in .?

        so oddly in centos7 .. is included in .? but excluded from @(?|.?)

        and in the more recent versions it's a different inconsistency, .
is excluded from ? ?? but included in @(?|.?)

        but that's a bit askew from what actually interests me.  if i had
my druthers, there would be an option to set so . and .. would never match
any (sub)glob other than their literal selves (even with dotglob set).

Repeat-By:
          $   echo $BASH_VERSION
        4.2.46(2)-release
          $   cat /etc/centos-release
        CentOS Linux release 7.8.2003 (Core)
          $   echo $BASHOPTS

checkwinsize:cmdhist:dotglob:expand_aliases:extglob:extquote:force_fignore:globstar:histappend:histreedit:histverify:hostcomplete:interactive_comments:nocaseglob:nocasematch:progcomp:promptvars
          $   touch a .b
          $   echo ? ??
        a .b
          $   echo ? .?         #.. is included
        a .. .b
          $   echo @(?|??)
        a .b
          $   echo @(?|.?)      #. and .. are excluded
        a .b
          $

          $   echo $BASH_VERSION
        4.4.19(1)-release
          $   cat /etc/centos-release
        CentOS Linux release 8.2.2004 (Core)
          $   echo $BASHOPTS

checkwinsize:cmdhist:complete_fullquote:dotglob:expand_aliases:extglob:extquote:force_fignore:globstar:histappend:histreedit:histverify:hostcomplete:interactive_comments:nocaseglob:nocasematch:progcomp:promptvars
          $   touch a .b
          $   echo ? ??
        a .b
          $   echo ? .?         #.. is included
        a .. .b
          $   echo @(?|??)
        a .b
          $   echo @(?|.?)      #. and .. are included
        . .. a .b
          $

          $   echo $BASH_VERSION
        5.0.17(1)-release
          $   cat /etc/lsb-release
        DISTRIB_ID=Ubuntu
        DISTRIB_RELEASE=20.04
        DISTRIB_CODENAME=focal
        DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"
          $   echo $BASHOPTS

checkwinsize:cmdhist:complete_fullquote:dotglob:expand_aliases:extglob:extquote:force_fignore:globasciiranges:globstar:histappend:histreedit:histverify:interactive_comments:login_shell:nocaseglob:nocasematch:progcomp:p
          $   touch a .b
          $   echo ? ??
        a .b
          $   echo ? .?         #.. is included
        a .. .b
          $   echo @(?|??)
        a .b
          $   echo @(?|.?)      #. and .. are included
        . .. a .b
          $   shopt -u dotglob
          $   echo ? ??
        a ??
          $   echo ? .?         #even with dotglob off .. is still matched
        a .. .b
          $   echo @(?|??)
        a
          $   echo @(?|.?)      #. is excluded but .. is included
        .. a .b
          $


reply via email to

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