Differences between revisions 1 and 35 (spanning 34 versions)
Revision 1 as of 2007-05-02 23:54:57
Size: 1045
Editor: redondos
Comment:
Revision 35 as of 2016-06-28 21:01:08
Size: 6544
Editor: geirha
Comment: found older bug-bash emails at google groups, so found dates for most versions down to 1.01
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[Anchor(faq61)]] <<Anchor(faq61)>>
Line 3: Line 3:
Here are some links to official Bash documentation:
Line 4: Line 5:
  * [http://cnswww.cns.cwru.edu/~chet/bash/NEWS NEWS]: a file tersely listing the notable changes between the current and previous versions
  * [http://cnswww.cns.cwru.edu/~chet/bash/CHANGES CHANGES]: a complete bash change history
  * [http://cnswww.cns.cwru.edu/~chet/bash/COMPAT COMPAT]: compatibility issues between bash3 and previous versions
  * [[http://cnswww.cns.cwru.edu/~chet/bash/NEWS|NEWS]]: a file tersely listing the notable changes between the current and previous versions
  * [[http://cnswww.cns.cwru.edu/~chet/bash/CHANGES|CHANGES]]: a "complete" bash change history (back to 2.0 only)
  * [[http://cnswww.cns.cwru.edu/~chet/bash/COMPAT|COMPAT]]: compatibility issues between bash3 and previous versions
Line 8: Line 9:
Here's a ''partial'' list of the changes, in a more compact format: 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 ===
Line 11: Line 14:
||x+=string||3.1-alpha1||
||{x..y}||3.0-alpha||
||${!array[@]}||3.0-alpha||
||[[ =~||3.0-alpha||
||<<<||2.05b-alpha1||
||i++||2.04-devel||
||for ((;;))||2.04-devel||
||/dev/fd/N, /dev/tcp/host/port, etc.||2.04-devel||
||a=(*.txt) file expansion||2.03-alpha||
||extglob||2.02-alpha1||
||[[||2.02-alpha1||
||builtin printf||2.02-alpha1||
||$(< filename)||2.02-alpha1||
||** (exponentiation)||2.02-alpha1||
||\xNNN||2.02-alpha1||
||(( ))||2.0-beta2||
||[[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||

=== Notable changes in released bash versions ===

||'''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)||

=== List of bash releases and other notable events ===

|| ```Release``` || ```Date``` ||
||<30%> Shellshock patches are released for bash-2.05b through bash-4.3 || 2014-09-24 to 2014-10-05 ||
|| bash-4.3 || [[http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00081.html|2014-02-27]] ||
|| bash-4.2 || [[http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00134.html|2011-02-14]] ||
|| bash-4.1 || [[http://lists.gnu.org/archive/html/bug-bash/2010-01/msg00000.html|2010-01-02]] ||
|| bash-4.0 || [[http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00164.html|2009-02-23]] ||
|| bash-3.2 || [[http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00057.html|2006-10-12]] ||
|| bash-3.1 || [[http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00018.html|2005-12-09]] ||
|| bash-3.0 || [[http://lists.gnu.org/archive/html/bug-bash/2004-07/msg00255.html|2004-07-27]] ||
|| bash-2.05b || [[http://lists.gnu.org/archive/html/bug-bash/2002-07/msg00169.html|2002-07-17]] ||
|| bash-2.05a || [[http://lists.gnu.org/archive/html/bug-bash/2001-11/msg00086.html|2001-11-15]] ||
|| bash-2.05 || [[http://lists.gnu.org/archive/html/bug-bash/2001-04/msg00047.html|2001-04-09]] ||
|| bash-2.04 || http://ftp.gnu.org/gnu/bash puts it around 2000-03-21 ||
|| bash-2.03 || [[https://groups.google.com/d/msg/gnu.bash.bug/3t0I8b4C848/PD66z8r966oJ|1999-02-19]] ||
|| bash-2.02 || [[https://groups.google.com/d/msg/gnu.bash.bug/wjK6DNyivbo/o_fzmlMXuh4J|1998-04-20]] ||
|| bash-2.01 || [[https://groups.google.com/d/msg/gnu.bash.bug/1YaFSUY31SI/QeaBAOzEfNUJ|1997-06-06]] ||
|| bash-2.0 || [[https://groups.google.com/d/msg/gnu.bash.bug/WE1Fa--vKw0/l9S7xZFP44AJ|1996-12-23]] ||
|| bash-1.14.7 || 1996-08-29 ||
|| bash-1.14 || [[https://groups.google.com/d/msg/gnu.bash.bug/oOfJhX8Es74/H1fYjpvy9toJ|1994-06-02]] ||
|| bash-1.13 || [[https://groups.google.com/d/msg/gnu.bash.bug/KSGrYVYsxEE/ldpQw6UHd5wJ|1993-09-03]] ||
||<colspan="2"> Looks like Chet Ramey takes over as maintainer between 1.12 and 1.13 ||
|| bash-1.12 || [[https://groups.google.com/d/msg/gnu.bash.bug/LqJlezOLPmw/fWEU5dx63swJ|1992-01-26]] ||
|| bash-1.11 || [[https://groups.google.com/d/msg/gnu.bash.bug/mtiSajVLFWQ/IO7lRZZaXuEJ|1992-01-10]] ||
|| bash-1.10 || First mention found at [[https://groups.google.com/d/msg/gnu.bash.bug/2JCACpoweVo/VcbTlUED2L8J|1991-10-07]], so some time before that ||
|| bash-1.09 || First mention found at [[https://groups.google.com/d/msg/gnu.bash.bug/r2mPhpzeFA0/uEe2lEymOOAJ|1991-06-02]] ||
|| bash-1.08 || [[https://groups.google.com/d/msg/gnu.bash.bug/6IYJUqnlXbo/PtB74jsSdBEJ|1991-05-22]] ||
|| bash-1.07 || likely [[https://groups.google.com/d/msg/gnu.bash.bug/IbPT47bVNak/TgM9oOgwDOEJ|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 || [[https://groups.google.com/d/msg/gnu.bash.bug/sdSJj38zObM/9OJmiMwsEeYJ|1990-03-03]] ||
|| bash-1.04 || First mention found at [[https://groups.google.com/d/msg/gnu.bash.bug/OEAOMxIgXNM/_0MmMKhwBUoJ|1989-11-07]] ||
|| bash-1.03 || [[https://groups.google.com/d/msg/gnu.bash.bug/0BNtldi31-I/0z3R_gKQQ5AJ|1989-09-02]] ||
|| bash-1.02 || First mention found at [[https://groups.google.com/d/msg/gnu.bash.bug/n6oK8g9ZT_s/ZoiyAtJ0PmgJ|1989-07-09]] ||
|| bash-1.01 || [[https://groups.google.com/d/msg/gnu.bash.bug/cDuxRblQx4c/KsqoeeDF7KgJ|1989-06-23]] ||
|| bash-1.00 || Hard to search for ... ||
|| bash-0.99 || First mention found at [[https://groups.google.com/d/msg/gnu.bash.bug/dliLANZUdwI/X-lY_E-bDRMJ|1989-06-11]] ||

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

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

Notable changes in released bash versions

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^[^]}

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)

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.7

1996-08-29

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)