Configuration Information [Automatically generated, do not change]: Machine: x86_64 OS: linux-gnu Compiler: gcc Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='x86_64' -DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='x86_64-unknown-linux-gnu' -DCONF_VENDOR='unknown' -DLOCALEDIR='/usr/share/locale' -DPACKAGE='bash' -DSHELL -DHAVE_CONFIG_H -I. -I. -I./include -I./lib -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -DDEFAULT_PATH_VALUE='/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin' -DSTANDARD_UTILS_PATH='/usr/bin:/bin:/usr/sbin:/sbin' -DSYS_BASHRC='/etc/bash.bashrc' -DSYS_BASH_LOGOUT='/etc/bash.bash_logout' uname output: Linux beaker 3.3.7-1-ARCH #1 SMP PREEMPT Tue May 22 00:26:26 CEST 2012 x86_64 GNU/Linux Machine Type: x86_64-unknown-linux-gnu
Bash Version: 4.2 Patch Level: 29 Release Status: release Description: To insert them in the history, bash converts multiline commands into a single line, normally replacing newlines with semicolons. However, if the multiline command happens to be an array assignment, adding the semicolon isn't always correct. Repeat-By: I'm not sure exactly when it happens, however this seems to more or less trigger it regularly: $ xxx=(a b c d > ) (we hit enter after the "d", to complete the assignment on the next line. ">" is the PS2 prompt) $ declare -p xxx declare -a xxx='([0]="a" [1]="b" [2]="c" [3]="d")' Now hit up arrow twice to recall the array assignment and we get this: $ xxx=(a b c d; ) -bash: syntax error near unexpected token `;' Fix: No idea!