Version 4 of bash

Updated 2007-01-31 12:24:27

bash is one of the common Unix shells, just like for example sh, ksh, csh and others.

The name is an acronym for Bourne-Again SHell, which is a slight pun on the old Bourne shell sh.

See http://www.gnu.org/software/bash/ for more details.

There seems to be no Tcl Heritage directly linked to bash (at least not yet), but the languages are similar in many ways. The quoting scheme used in Tcl was (almost certainly) influenced by shell languages such as Bash.

Programmers in Tcl have been confused at times by the Tcl quoting scheme because they expected Tcl quoting to operate the same way as Bash or other shell-language quoting, so many Tcl programmers would probably do well to know the pitfalls and frequently asked questions about Bash. Also, Bash commands can be invoked through Tcl via exec and friends, in which case it will probably help to be familiar with the differences. In particular, Bash tends to automatically expand wild cards such as *.txt, whereas in Tcl such expansions will typically require an explicit glob command.

A good FAQ page about Bash is at: http://wooledge.org/mywiki/BashFaq

A good pitfalls page about Bash is at: http://wooledge.org/mywiki/BashPitfalls


Problems building Tcl (or extensions) with newer bash versions (3.0 and up)

When building older Tcl versions or Tcl extensions based on TEA, ./configure will fail with an error resembling:

 ./configure: line 7624: syntax error near unexpected token `)'

The cause of this error is a typo in tcl.m4 and the generated configure file. Previous versions of bash accepted the incorrectly quoted version, but newer versions will error out. The solution is to create a new configure file with the correct quoting:

 cp configure{,.orig} && sed "s/relid'/relid/" configure.orig > configure

The typo has been fixed from Tcl 8.4.14. Extensions might exhibit this problem for quite some time to come.