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
signature.asc
Description: Digital signature