Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #11663

updating shopt compat settings to include current version

Path csiph.com!xmission!news.glorb.com!usenet.stanford.edu!not-for-mail
From Mike Frysinger <vapier@gentoo.org>
Newsgroups gnu.bash.bug
Subject updating shopt compat settings to include current version
Date Thu, 15 Oct 2015 13:34:33 -0400
Lines 77
Approved bug-bash@gnu.org
Message-ID <mailman.403.1444930560.7904.bug-bash@gnu.org> (permalink)
NNTP-Posting-Host lists.gnu.org
Mime-Version 1.0
Content-Type multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="GDLQamdgIxhPcIwq"
X-Trace usenet.stanford.edu 1444930560 27233 208.118.235.17 (15 Oct 2015 17:36:00 GMT)
X-Complaints-To action@cs.stanford.edu
To bug-bash@gnu.org
Envelope-to bug-bash@gnu.org
Mail-Followup-To bug-bash@gnu.org
Content-Disposition inline
X-detected-operating-system by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From 140.211.166.183
X-BeenThere bug-bash@gnu.org
X-Mailman-Version 2.1.14
Precedence list
List-Id Bug reports for the GNU Bourne Again SHell <bug-bash.gnu.org>
List-Unsubscribe <https://lists.gnu.org/mailman/options/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=unsubscribe>
List-Archive <http://lists.gnu.org/archive/html/bug-bash>
List-Post <mailto:bug-bash@gnu.org>
List-Help <mailto:bug-bash-request@gnu.org?subject=help>
List-Subscribe <https://lists.gnu.org/mailman/listinfo/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=subscribe>
Xref csiph.com gnu.bash.bug:11663

Show key headers only | View raw


[Multipart message — attachments visible in raw view] - view raw

with bash-4.0, new compat options were introduced:
	shopt -s compat32
and with bash-4.3, a variable was added:
	export BASH_COMPAT=3.2

but things get a little weird when you want to set the compat level to
the current version:
	$ echo $BASH_VERSION
	4.3.42(1)-release
	$ shopt -s compat43
	bash: shopt: compat43: invalid shell option name
	$ export BASH_COMPAT=4.3
	<no error as DEFAULT_COMPAT_LEVEL is 43>

we're interested in this in Gentoo because we want to set the current
shell compat level to a min version even if that version is the active
one.  ideally it'd be:
	if ! shopt -s compat43 ; then
		echo "error: >=bash-4.3 required, but ${BASH_VERSION} found" >&2
		exit 1
	fi

instead we have to probe the active version ourselves:
	if ! shopt -s compat43 ; then
		if [[ ${BASH_VERSINFO[0]} -ne "4" || ${BASH_VERSINFO[1]} -ne "3" ]] ; then
			echo ...
			exit 1
		fi
	fi

the BASH_COMPAT variable isn't as useful:
 - possible to accidentally export and impact other shell scripts
 - doesn't fail for <bash-4.3 versions
 - when set to a bad value, $? is set to 0
 - need to capture & test stderr
which means you end up with:
	if ([[ -n $( (BASH_COMPAT=4.3) 2>&1 ) ]] ||
	    [[ ${BASH_VERSINFO[0]} -lt 4 ]] ||
	    [[ ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 3 ]]) ; then
		echo ...
		exit 1
	fi
	BASH_COMPAT=4.3

so my request is simple: can we have compatXY added for the current version ?
so in the upcoming bash-4.4 release, get a compat44 option added.
-mike

Back to gnu.bash.bug | Previous | Next | Find similar


Thread

updating shopt compat settings to include current version Mike Frysinger <vapier@gentoo.org> - 2015-10-15 13:34 -0400

csiph-web