[http://www.tcl.tk/man/tcl/UserCmd/tclsh.htm#M10|%|%tclsh man page%|%] This global variable identifies whether the tcl interpreter is operating in interactive mode or not. If its value is 1 , then the interpreter acts as if it were an interactive interpreter. See [tclsh] for a list of the differences between interactive and non-interactive mode. [Ro]: You can shorten commands in interactive mode, e.g.: "inf" for "info". [RS] 2004-03-24: Yup - and this is especially delightful on a [PocketPC] where less stylus-tapping is better. If the abbreviation is unambiguous, like ''ll'' for [[[llength]], it saves time and screen space; if it is ambiguous (e.g. 'l'), it is another [introspection] helper - the educational error message shows you the possible completions, just as [[info command l*]] would have done. ======none % l ambiguous command name "l": label labelframe lappend lindex linsert list listbox llength load loadvfs lower lrange lreplace lsearch lset lsort % ll wrong # args: should be "llength list" ====== Just make sure that the interactive command is tried at global level (0), so that [unknown] (which provides abbreviation mode) finds itself at level 1. ---- If [tclsh] runs a script given on the command line, [tcl_interactive] is set to 0, but adding the line ====== set ::tcl_interactive 1 ====== gives you the described benefits, so I added that to [iFile 1.1]. [DGP]: Note this feature is new in Tcl 8.4. Note also that the intended user of this feature is Tcl's test suite. Use with care. [JMN] 2008: This variable seems to be undefined in new threads created using the Thread package. I suspect this is a bug, as other variables such as tcl_patchLevel do exist in new threads. On loading a module into another thread, which uses ::tcl_patchLevel to change its logging behaviour slightly, I get the error: ======none can't read "::tcl_interactive": no such variable ====== <> Tcl syntax | Internals