Differences between revisions 37 and 38
Revision 37 as of 2016-08-07 21:54:38
Size: 6578
Editor: geirha
Comment: arrays and $'...'
Revision 38 as of 2016-08-22 20:13:40
Size: 7553
Comment: Add indication of origin for the different features
Deletions are marked like this. Additions are marked like this.
Line 13: Line 13:
||'''Feature'''||'''Added in version'''||
||[[BashLoadableBuiltins|loadable builtin]] deployment infrastructure||4.4-beta||
||mapfile -d||4.4-alpha||
||--help for builtins||4.4-alpha
||
||${var@spec}||4.4-alpha||
||local -||4.4-alpha||
||$! and wait for process substitutions||4.4-alpha||
||'''Feature'''||'''Added in version'''||'''Copied/inspired from'''||
||[[BashLoadableBuiltins|loadable builtin]] deployment infrastructure||4.4-beta||ksh93 (1993)||
||mapfile/readarray -d||4.4-alpha||native||
||--help for builtins||4.4-alpha||ksh93 (2001, possibly earlier)
||
||${var@spec}||4.4-alpha||mksh (2012) for the syntax, zsh (1990s) for the feature||
||local -||4.4-alpha||zsh (set -o localoptions) (1995)||
||$! and wait for process substitutions||4.4-alpha||native||
Line 23: Line 23:
||'''Feature'''||'''Added in version'''||
||wait -n||4.3 (2014)||
||test -R||4.3 (2014)||
||declare/typeset -n and associated changes to ${!ref} and for..in||4.3 (2014)||
||array[-idx] (in assignments, read, unset, etc)||4.3 (2014)||
||\uXXXX and \UXXXXXXXX||4.2 (2011)||
||declare -g||4.2 (2011)||
||test -v||4.2 (2011)||
||printf %(fmt)T||4.2 (2011)||
||${array[-idx]} and ${var:start:-len}||4.2 (2011)||
||lastpipe (shopt)||4.2 (2011)||
||read -N||4.1 (2010)||
||{var}> or {var}< etc. (FD variable assignment)||4.1 (2010)||
||syslog history (compile option)||4.1 (2010)||
||BASH_XTRACEFD||4.1 (2010)||
||;& and ;;& fall-throughs for case||4.0 (2009)||
||associative arrays||4.0 (2009)||
||&>> and |&||4.0 (2009)||
||command_not_found_handle (function)||4.0 (2009)||
||coproc (keyword)||4.0 (2009)||
||globstar (shopt)||4.0 (2009)||
||mapfile/readarray (builtin)||4.0 (2009)||
||${var,[,]} and ${var&#94;[&#94;]}||4.0 (2009)||
||{009..012} (leading zeros in brace expansions)||4.0 (2009)||
||{x..y..incr}||4.0 (2009)||
||read -t 0||4.0 (2009)||
||read -i||4.0 (2009)||
||x+=string array+=(string)||3.1 (2005)||
||printf -v var||3.1 (2005)||
||nocasematch (shopt)||3.1 (2005)||
||{x..y}||3.0 (2004)||
||${!array[@]}||3.0 (2004)||
||[[ =~||3.0 (2004)||
||printf %q produces $'...'||2.05b (2002)||
||<<<||2.05b (2002)||
||i++||2.04 (2000)||
||for ((;;))||2.04 (2000)||
||/dev/fd/N, /dev/tcp/host/port, etc.||2.04 (2000)||
||read -t, -n, -d and -s||2.04 (2000)||
||a=(*.txt) file expansion||2.03 (1999)||
||extglob (shopt)||2.02 (1998)||
||[[||2.02 (1998)||
||printf (builtin)||2.02 (1998)||
||$(< filename)||2.02 (1998)||
||** (exponentiation)||2.02 (1998)||
||\xNNN||2.02 (1998)||
||(( ))||2.0 (1996)||
||arrays||2.0 (1996)||
||$'...' (new quoting syntax)||2.0 (1996)||
||'''Feature'''||'''Added in version'''||'''Copied/inspired from'''||
||wait -n||4.3 (2014)||native||
||test -R||4.3 (2014)||ksh93 (1993)||
||declare/typeset -n and associated changes to ${!ref} and for..in||4.3 (2014)||ksh93 (1993)||
||array[-idx] (in assignments, read, unset, etc)||4.3 (2014)||zsh (1990s)||
||\uXXXX and \UXXXXXXXX||4.2 (2011)||zsh (2001)||
||declare -g||4.2 (2011)||zsh (1990s)||
||test -v||4.2 (2011)||ksh93 (2009)||
||printf %(fmt)T||4.2 (2011)||ksh93 (1999)||
||${array[-idx]} and ${var:start:-len}||4.2 (2011)||zsh (1990s) and native||
||lastpipe (shopt)||4.2 (2011)||ksh (1980s) default behaviour there||
||read -N||4.1 (2010)||ksh93 (2003)||
||{var}> or {var}< etc. (FD variable assignment)||4.1 (2010)||developed jointly with ksh93 and zsh||
||syslog history (compile option)||4.1 (2010)||native||
||BASH_XTRACEFD||4.1 (2010)||native||
||;& and ;;& fall-throughs for case||4.0 (2009)||ksh93 (1993)||
||associative arrays||4.0 (2009)||ksh93 (1993)||
||&>> and |&||4.0 (2009)||native and csh (1970s)||
||command_not_found_handle (function)||4.0 (2009)||native||
||coproc (keyword)||4.0 (2009)||ksh (1980s), zsh (1990) for the coproc keyword||
||globstar (shopt)||4.0 (2009)||zsh (1992), ksh93 (2005) for the name of the option||
||mapfile/readarray (builtin)||4.0 (2009)||native||
||${var,[,]} and ${var&#94;[&#94;]}||4.0 (2009)||native||
||{009..012} (leading zeros in brace expansions)||4.0 (2009)||zsh (1995)||
||{x..y..incr}||4.0 (2009)||ksh93 (2005)||
||read -t 0||4.0 (2009)||ksh93 (1993)||
||read -i||4.0 (2009)||zsh (vared) (1990s)||
||x+=string array+=(string)||3.1 (2005)|| ksh93 (2000) ||
||printf -v var||3.1 (2005)||native||
||nocasematch (shopt)||3.1 (2005)||native||
||{x..y}||3.0 (2004)||zsh (1995)||
||${!array[@]}||3.0 (2004)||ksh93 (1993)||
||[[ =~||3.0 (2004)||native||
||printf %q produces $'...'||2.05b (2002)||ksh93 (1993)||
||<<<||2.05b (2002)||zsh (1990s)||
||i++||2.04 (2000)||ksh93 (1993)||
||for ((;;))||2.04 (2000)||ksh93 (1993)||
||/dev/fd/N, /dev/tcp/host/port, etc.||2.04 (2000)||ksh93 (1990s)||
||read -t, -n, -d and -s||2.04 (2000)||ksh93 (1993)||
||a=(*.txt) file expansion||2.03 (1999)||ksh93 (1993)||
||extglob (shopt)||2.02 (1998)||ksh (1980s)||
||[[||2.02 (1998)||ksh (1980s)||
||printf (builtin)||2.02 (1998)||ksh (1980s)||
||$(< filename)||2.02 (1998)||ksh (1980s)||
||** (exponentiation)||2.02 (1998)||native||
||\xNNN||2.02 (1998)||zsh (1994 or earlier)||
||(( ))||2.0 (1996)||ksh (1980s)||
||arrays||2.0 (1996)||ksh (1980s)||
||$'...' (new quoting syntax)||2.0 (1996)||ksh93 (1993)||

Is there a list of which features were added to specific releases (versions) of Bash?

Here are some links to official Bash documentation:

  • NEWS: a file tersely listing the notable changes between the current and previous versions

  • CHANGES: a "complete" bash change history (back to 2.0 only)

  • COMPAT: compatibility issues between bash3 and previous versions

A more extensive list than the one below can be found at http://wiki.bash-hackers.org/scripting/bashchanges

Notable changes in the upcoming bash version

Feature

Added in version

Copied/inspired from

loadable builtin deployment infrastructure

4.4-beta

ksh93 (1993)

mapfile/readarray -d

4.4-alpha

native

--help for builtins

4.4-alpha

ksh93 (2001, possibly earlier)

${var@spec}

4.4-alpha

mksh (2012) for the syntax, zsh (1990s) for the feature

local -

4.4-alpha

zsh (set -o localoptions) (1995)

$! and wait for process substitutions

4.4-alpha

native

Notable changes in released bash versions

Feature

Added in version

Copied/inspired from

wait -n

4.3 (2014)

native

test -R

4.3 (2014)

ksh93 (1993)

declare/typeset -n and associated changes to ${!ref} and for..in

4.3 (2014)

ksh93 (1993)

array[-idx] (in assignments, read, unset, etc)

4.3 (2014)

zsh (1990s)

\uXXXX and \UXXXXXXXX

4.2 (2011)

zsh (2001)

declare -g

4.2 (2011)

zsh (1990s)

test -v

4.2 (2011)

ksh93 (2009)

printf %(fmt)T

4.2 (2011)

ksh93 (1999)

${array[-idx]} and ${var:start:-len}

4.2 (2011)

zsh (1990s) and native

lastpipe (shopt)

4.2 (2011)

ksh (1980s) default behaviour there

read -N

4.1 (2010)

ksh93 (2003)

{var}> or {var}< etc. (FD variable assignment)

4.1 (2010)

developed jointly with ksh93 and zsh

syslog history (compile option)

4.1 (2010)

native

BASH_XTRACEFD

4.1 (2010)

native

;& and ;;& fall-throughs for case

4.0 (2009)

ksh93 (1993)

associative arrays

4.0 (2009)

ksh93 (1993)

&>> and |&

4.0 (2009)

native and csh (1970s)

command_not_found_handle (function)

4.0 (2009)

native

coproc (keyword)

4.0 (2009)

ksh (1980s), zsh (1990) for the coproc keyword

globstar (shopt)

4.0 (2009)

zsh (1992), ksh93 (2005) for the name of the option

mapfile/readarray (builtin)

4.0 (2009)

native

${var,[,]} and ${var^[^]}

4.0 (2009)

native

{009..012} (leading zeros in brace expansions)

4.0 (2009)

zsh (1995)

{x..y..incr}

4.0 (2009)

ksh93 (2005)

read -t 0

4.0 (2009)

ksh93 (1993)

read -i

4.0 (2009)

zsh (vared) (1990s)

x+=string array+=(string)

3.1 (2005)

ksh93 (2000)

printf -v var

3.1 (2005)

native

nocasematch (shopt)

3.1 (2005)

native

{x..y}

3.0 (2004)

zsh (1995)

${!array[@]}

3.0 (2004)

ksh93 (1993)

[[ =~

3.0 (2004)

native

printf %q produces $'...'

2.05b (2002)

ksh93 (1993)

<<<

2.05b (2002)

zsh (1990s)

i++

2.04 (2000)

ksh93 (1993)

for ((;;))

2.04 (2000)

ksh93 (1993)

/dev/fd/N, /dev/tcp/host/port, etc.

2.04 (2000)

ksh93 (1990s)

read -t, -n, -d and -s

2.04 (2000)

ksh93 (1993)

a=(*.txt) file expansion

2.03 (1999)

ksh93 (1993)

extglob (shopt)

2.02 (1998)

ksh (1980s)

[[

2.02 (1998)

ksh (1980s)

printf (builtin)

2.02 (1998)

ksh (1980s)

$(< filename)

2.02 (1998)

ksh (1980s)

** (exponentiation)

2.02 (1998)

native

\xNNN

2.02 (1998)

zsh (1994 or earlier)

(( ))

2.0 (1996)

ksh (1980s)

arrays

2.0 (1996)

ksh (1980s)

$'...' (new quoting syntax)

2.0 (1996)

ksh93 (1993)

List of bash releases and other notable events

Release

Date

Shellshock patches are released for bash-2.05b through bash-4.3

2014-09-24 to 2014-10-05

bash-4.3

2014-02-27

bash-4.2

2011-02-14

bash-4.1

2010-01-02

bash-4.0

2009-02-23

bash-3.2

2006-10-12

bash-3.1

2005-12-09

bash-3.0

2004-07-27

bash-2.05b

2002-07-17

bash-2.05a

2001-11-15

bash-2.05

2001-04-09

bash-2.04

http://ftp.gnu.org/gnu/bash puts it around 2000-03-21

bash-2.03

1999-02-19

bash-2.02

1998-04-20

bash-2.01

1997-06-06

bash-2.0

1996-12-23

bash-1.14

1994-06-02

bash-1.13

1993-09-03

Looks like Chet Ramey takes over as maintainer between 1.12 and 1.13

bash-1.12

1992-01-26

bash-1.11

1992-01-10

bash-1.10

First mention found at 1991-10-07, so some time before that

bash-1.09

First mention found at 1991-06-02

bash-1.08

1991-05-22

bash-1.07

likely 1991-02-01

bash-1.06

 This is a tough one. There was apparently a "bootleg" version of 1.06, so this requires more digging

bash-1.05

1990-03-03

bash-1.04

First mention found at 1989-11-07

bash-1.03

1989-09-02

bash-1.02

First mention found at 1989-07-09

bash-1.01

1989-06-23

bash-1.00

Hard to search for ...

bash-0.99

First mention found at 1989-06-11

BashFAQ/061 (last edited 2024-04-14 22:29:57 by emanuele6)