Most '''[Unix] shells''' belong to the [Bourne Shell] family or the [csh] family, although other alternative shells exist. Tcl may not be a direct descendant of any of the preexisting shells, but it certainly shares some of their traits, notably [EIAS], although in this area Tcl is more disciplined and consistent than other shells. ---- Recently, someone on news:comp.lang.tcl asked for a reference comparing a language such as bash and tcl, to help a bash programmer to learn to program in Tcl. Is anyone aware of such a help/HOWTO/etc.? -> [Playing Bourne shell] ---- See [Tcl Heritage] for some of the influences on Tcl from various sources, including a number of Unix shell languages. See also [Tcl and other languages]. ---- http://faqs.org/faqs/unix-faq/shell/shell-differences/ is a web site that (at least for now) discusses differences between several common Unix shells. It would be useful to compare Tcl to those shells to point out commonalities and differences. For instance, in shells that are derivative of Bourne shell, you assign the stdout of an embedded command using one of these types of notation: ======none a=`date` ====== or ======none a="$(date)" ====== In Tcl, you would type brackets, as first seen in Multics, in place of the backquotes: ====== set a [date] ====== In [Bourne Shell%|%Bourne shells], to use a literal with no variable assignments, you would use ====== sentence='a value of $42.11 (no kidding); This is just a string. `backquotes` mean nothing special, either' ====== while in Tcl, braces do something similar: ====== set a {a value of $42.11 (no kidding); This is just a string. `backquotes` mean nothing special, either} ====== or perhaps (if the value is a single word without possible substitutions): ====== set a date ====== If you want to assign a string including a variable to another variable, you might type ====== b="$a is a fruit" ====== while in Tcl you would type ====== set b "$a is a fruit" ====== In quoted strings, substitutions with dollar, backslash and bracketed commands are performed. If the string contains no whitespace (other than in embedded commands), you may omit the quotes. ---- See [gush] for an attempt to write an updated Unix shell/terminal in Tcl. See [ksh] for some pointers to one popular unix command shell which is also available on Windows. <> Unix