Bug 978967

Summary: ksh noglob disables braceexpand variable substitution
Product: Red Hat Enterprise Linux 6 Reporter: Konstantin Gremliza <konstantin>
Component: kshAssignee: Michal Hlavinka <mhlavink>
Status: CLOSED NOTABUG QA Contact: BaseOS QE - Apps <qe-baseos-apps>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.2   
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-07-09 14:31:32 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Konstantin Gremliza 2013-06-27 11:56:22 UTC
Description of problem:
If a variable contains special characters for brace group expansion and the noglob switch is enabled, brace group expansion does not work allthough the bracegroup switch is enabled.


Version-Release number of selected component (if applicable):
Name        : ksh                          Relocations: (not relocatable)
Version     : 20100621                          Vendor: CentOS
Release     : 12.el6_2.1                    Build Date: Fri 06 Jan 2012 04:22:02 PM CET
Install Date: Tue 12 Jun 2012 02:56:09 PM CEST      Build Host: c6b18n1.dev.centos.org
Group       : System Environment/Shells     Source RPM: ksh-20100621-12.el6_2.1.src.rpm
Size        : 1548708                          License: CPL
Signature   : RSA/SHA1, Fri 06 Jan 2012 06:11:35 PM CET, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.kornshell.com/
Summary     : The Original ATT Korn Shell
Description :
KSH-93 is the most recent version of the KornShell by David Korn of
AT&T Bell Laboratories.
KornShell is a shell programming language, which is upward compatible
with "sh" (the Bourne Shell).

How reproducible:
ksh> set -o
Current option settings
allexport                off
bgnice                   on
braceexpand              on
clobber                  on
emacs                    off
errexit                  off
exec                     on
glob                     on
globstar                 off
gmacs                    off
histexpand               off
ignoreeof                off
interactive              on
keyword                  off
log                      on
login_shell              off
markdirs                 off
monitor                  on
multiline                off
notify                   off
pipefail                 off
privileged               off
rc                       on
restricted               off
showme                   off
trackall                 off
unset                    on
verbose                  off
vi                       off
viraw                    on
xtrace                   off

Current option settings

allexport                off
bgnice                   on
braceexpand              on
clobber                  on
emacs                    off
errexit                  off
exec                     on
glob                     off
globstar                 off
gmacs                    off
histexpand               off
ignoreeof                off
interactive              on
keyword                  off
log                      on
login_shell              off
markdirs                 off
monitor                  on
multiline                off
notify                   off
pipefail                 off
privileged               off
rc                       on
restricted               off
showme                   off
trackall                 off
unset                    on
verbose                  off
vi                       off
viraw                    on
xtrace                   off

ksh> a="{foo,bar,blafasel}.c"
ksh> print $a
foo.c bar.c blafasel.c
ksh> set -o noglob
ksh> print $a
{foo,bar,blafasel}.c

ksh> set -o
Current option settings
allexport                off
bgnice                   on
braceexpand              on
clobber                  on
emacs                    off
errexit                  off
exec                     on
glob                     off
globstar                 off
gmacs                    off
histexpand               off
ignoreeof                off
interactive              on
keyword                  off
log                      on
login_shell              off
markdirs                 off
monitor                  on
multiline                off
notify                   off
pipefail                 off
privileged               off
rc                       on
restricted               off
showme                   off
trackall                 off
unset                    on
verbose                  off
vi                       off
viraw                    on
xtrace                   off




Steps to Reproduce:
1.
2.
3.

Actual results:
{foo,bar,blafasel}.c

Expected results:
foo.c bar.c blafasel.c

Additional info:

Comment 2 Michal Hlavinka 2013-07-09 14:31:32 UTC
Discussed with upstream and this is expected behavior:

> braceexpand is a part of globbing so that turning off globbing
> will also turn off brace expansion.