Provided by: tcl8.4-doc_8.4.20-7_all bug

NAME

       tclvars - Variables used by Tcl
_________________________________________________________________

DESCRIPTION

       The  following  global variables are created and managed automatically by the Tcl library.
       Except where noted below, these variables should  normally  be  treated  as  read-only  by
       application-specific code and by users.

       env    This  variable  is maintained by Tcl as an array whose elements are the environment
              variables for the process.  Reading  an  element  will  return  the  value  of  the
              corresponding  environment  variable.   Setting an element of the array will modify
              the corresponding environment variable or create a new one if  it  doesn't  already
              exist.   Unsetting  an  element  of  env  will remove the corresponding environment
              variable.  Changes to the env array will affect the environment passed to  children
              by  commands  like  exec.   If  the  entire  env  array is unset then Tcl will stop
              monitoring env accesses and will not update environment variables.
              Under Windows, the environment variables PATH and COMSPEC in any capitalization are │
              converted  automatically  to  upper case.  For instance, the PATH variable could be │
              exported by the operating system as ``path'',  ``Path'',  ``PaTh'',  etc.,  causing │
              otherwise  simple  Tcl  code  to  have  to  support  many special cases.  All other │
              environment variables inherited by Tcl are left unmodified.  Setting an  env  array │
              variable  to  blank  is  the  same  as  unsetting it as this is the behavior of the │
              underlying Windows OS.  It should be noted that relying on an  existing  and  empty │
              environment  variable  won't  work on windows and is discouraged for cross-platform │
              usage.                                                                              │

       errorCode                                                                                  │
              After an error has occurred, this variable  will  be  set  to  hold  a  list  value │
              representing  additional  information  about  the  error  in a form that is easy to │
              process with programs.  The first element of the list identifies a general class of │
              errors,  and  determines the format of the rest of the list.  The following formats │
              for errorCode are  used  by  the  Tcl  core;  individual  applications  may  define │
              additional formats.                                                                 │

              ARITH code msg                                                                      │
                     This  format  is  used  when  an arithmetic error occurs (e.g. an attempt to │
                     divide by zero in the expr command).  Code identifies the precise error  and │
                     msg provides a human-readable description of the error.  Code will be either │
                     DIVZERO (for an attempt to divide  by  zero),  DOMAIN  (if  an  argument  is │
                     outside  the domain of a function, such as acos(-3)), IOVERFLOW (for integer │
                     overflow), OVERFLOW (for a floating-point  overflow),  or  UNKNOWN  (if  the │
                     cause of the error cannot be determined).                                    │

              CHILDKILLED pid sigName msg                                                         │
                     This  format  is  used  when  a  child  process has been killed because of a │
                     signal.  The second element of errorCode will be  the  process's  identifier │
                     (in  decimal).   The  third  element will be the symbolic name of the signal │
                     that caused the process to terminate; it will be one of the names  from  the │
                     include  file signal.h, such as SIGPIPE.  The fourth element will be a short │
                     human-readable message describing the signal, such as ``write on  pipe  with │
                     no readers'' for SIGPIPE.                                                    │

              CHILDSTATUS pid code                                                                │
                     This  format  is  used  when a child process has exited with a non-zero exit │
                     status.  The second element of errorCode will be  the  process's  identifier │
                     (in  decimal)  and  the  third element will be the exit code returned by the │
                     process (also in decimal).                                                   │

              CHILDSUSP pid sigName msg                                                           │
                     This format is used when a child process has been  suspended  because  of  a │
                     signal.   The  second element of errorCode will be the process's identifier, │
                     in decimal.  The third element will be the symbolic name of the signal  that │
                     caused  the  process  to  suspend;  this  will  be one of the names from the │
                     include file signal.h, such as SIGTTIN.  The fourth element will be a  short │
                     human-readable  message  describing  the  signal,  such  as ``background tty │
                     read'' for SIGTTIN.                                                          │

              NONE                                                                                │
                     This format is used for errors where no additional information is  available │
                     for  an  error  besides the message returned with the error.  In these cases │
                     errorCode will consist of a list containing a single element whose  contents │
                     are NONE.                                                                    │

              POSIX errName msg                                                                   │
                     If the first element of errorCode is POSIX, then the error occurred during a │
                     POSIX kernel call.  The second element of the list will contain the symbolic │
                     name  of  the  error  that occurred, such as ENOENT; this will be one of the │
                     values defined in the include file errno.h.  The third element of  the  list │
                     will be a human-readable message corresponding to errName, such as ``no such │
                     file or directory'' for the ENOENT case.                                     │

              To  set  errorCode,  applications   should   use   library   procedures   such   as │
              Tcl_SetErrorCode  and Tcl_PosixError, or they may invoke the error command.  If one │
              of these methods hasn't been used, then the Tcl interpreter will reset the variable │
              to NONE after the next error.                                                       │

       errorInfo                                                                                  │
              After an error has occurred, this string will contain one or more lines identifying │
              the Tcl commands and procedures that were being executed when the most recent error │
              occurred.   Its  contents take the form of a stack trace showing the various nested │
              Tcl commands that had been invoked at the time of the error.                        │

       tcl_library                                                                                │
              This variable holds the name of a directory containing the system  library  of  Tcl │
              scripts,  such  as  those  used  for  auto-loading.   The value of this variable is │
              returned by the info library command.  See the library manual entry for details  of │
              the  facilities  provided  by the Tcl script library.  Normally each application or │
              package will have its own application-specific script library in  addition  to  the │
              Tcl  script library; each application should set a global variable with a name like │
              $app_library (where app is the application's name) to hold the  network  file  name │
              for  that application's library directory.  The initial value of tcl_library is set │
              when an interpreter is created by searching several different directories until one │
              is  found  that  contains  an  appropriate  Tcl startup script.  If the TCL_LIBRARY │
              environment variable exists, then the directory it  names  is  checked  first.   If │
              TCL_LIBRARY isn't set or doesn't refer to an appropriate directory, then Tcl checks │
              several other directories based on a compiled-in default location, the location  of │
              the binary containing the application, and the current working directory.           │

       tcl_patchLevel                                                                             │
              When  an  interpreter  is  created  Tcl  initializes this variable to hold a string │
              giving the current patch level for Tcl, such as 7.3p2 for Tcl 7.3  with  the  first │
              two  official  patches, or 7.4b4 for the fourth beta release of Tcl 7.4.  The value │
              of this variable is returned by the info patchlevel command.                        │

       tcl_pkgPath                                                                                │
              This variable holds a list of directories indicating where  packages  are  normally │
              installed.   It  is  not  used on Windows.  It typically contains either one or two │
              entries; if it contains  two  entries,  the  first  is  normally  a  directory  for │
              platform-dependent  packages  (e.g.,  shared  library  binaries)  and the second is │
              normally a  directory  for  platform-independent  packages  (e.g.,  script  files). │
              Typically  a  package  is  installed  as  a  subdirectory  of one of the entries in │
              $tcl_pkgPath. The directories in  $tcl_pkgPath  are  included  by  default  in  the │
              auto_path  variable,  so  they and their immediate subdirectories are automatically │
              searched for packages during package require commands.  Note:  tcl_pkgPath  it  not │
              intended  to  be  modified  by the application.  Its value is added to auto_path at │
              startup; changes to tcl_pkgPath are not reflected in auto_path.  If you want Tcl to │
              search  additional  directories  for  packages  you  should  add the names of those │
              directories to auto_path, not tcl_pkgPath.

       tcl_platform
              This is an associative array whose elements contain information about the  platform
              on  which the application is running, such as the name of the operating system, its
              current release number, and the machine's instruction  set.   The  elements  listed
              below  will  always  be  defined,  but they may have empty strings as values if Tcl
              couldn't  retrieve  any  relevant  information.   In   addition,   extensions   and
              applications may add additional values to the array.  The predefined elements are:

              byteOrder                                                                           │
                     The native byte order of this machine: either littleEndian or bigEndian.

              debug  If  this  variable exists, then the interpreter was compiled with and linked
                     to a debug-enabled C run-time.  This variable will only exist on Windows, so
                     extension  writers can specify which package to load depending on the C run-
                     time library that is in use.  This is  not  an  indication  that  this  core
                     contains symbols.

              machine
                     The  instruction  set  executed by this machine, such as intel, PPC, 68k, or
                     sun4m.  On UNIX machines, this is the value returned by uname -m.

              os     The name of the operating system running on this machine,  such  as  Windows
                     95,  Windows  NT,  MacOS,  or  SunOS.   On  UNIX machines, this is the value
                     returned by uname -s.  On Windows 95 and Windows 98, the value returned will
                     be  Windows  95  to provide better backwards compatibility to Windows 95; to
                     distinguish between the two, check the osVersion.

              osVersion
                     The version number for the operating system running  on  this  machine.   On
                     UNIX  machines,  this is the value returned by uname -r.  On Windows 95, the
                     version will be 4.0; on Windows 98, the version will be 4.10.

              platform
                     Either windows or unix.  This identifies the general  operating  environment
                     of the machine.

              threaded
                     If  this  variable  exists,  then  the interpreter was compiled with threads
                     enabled.

              user   This identifies the current user based on the login information available on
                     the  platform.   This comes from the USER or LOGNAME environment variable on
                     Unix, and the value from GetUserName on Windows.

              wordSize
                     This gives the size of the native-machine word in  bytes  (strictly,  it  is │
                     same as the result of evaluating sizeof(long) in C.)

       tcl_precision
              This  variable  controls the number of digits to generate when converting floating- │
              point values to strings.  It defaults to 12.  17 digits  is  ``perfect''  for  IEEE │
              floating-point in that it allows double-precision values to be converted to strings │
              and back to binary with no loss of information.  However, using 17 digits  prevents │
              any rounding, which produces longer, less intuitive results.  For example, expr 1.4 │
              returns 1.3999999999999999 with tcl_precision set to 17, vs. 1.4  if  tcl_precision │
              is 12.                                                                              │
              All  interpreters  in  a process share a single tcl_precision value: changing it in │
              one interpreter  will  affect  all  other  interpreters  as  well.   However,  safe │
              interpreters are not allowed to modify the variable.                                │

       tcl_rcFileName
              This variable is used during initialization to indicate the name of a user-specific
              startup file.  If it is set by application-specific initialization,  then  the  Tcl
              startup  code will check for the existence of this file and source it if it exists.
              For example, for wish the variable is set to ~/.wishrc for  Unix  and  ~/wishrc.tcl
              for Windows.

       tcl_traceCompile
              The  value  of  this variable can be set to control how much tracing information is
              displayed during bytecode compilation.  By default, tcl_traceCompile is zero and no
              information  is  displayed.   Setting  tcl_traceCompile  to  1 generates a one-line
              summary in stdout whenever a procedure or top-level command is  compiled.   Setting
              it to 2 generates a detailed listing in stdout of the bytecode instructions emitted
              during every compilation.  This variable  is  useful  in  tracking  down  suspected
              problems  with  the  Tcl  compiler.  It is also occasionally useful when converting
              existing code to use Tcl8.0.

       This variable and functionality only exist if TCL_COMPILE_DEBUG was defined  during  Tcl's
       compilation.

       tcl_traceExec
              The  value  of  this variable can be set to control how much tracing information is
              displayed during bytecode execution.  By default,  tcl_traceExec  is  zero  and  no
              information is displayed.  Setting tcl_traceExec to 1 generates a one-line trace in
              stdout on each call to a Tcl procedure.  Setting it to 2 generates a line of output
              whenever  any  Tcl command is invoked that contains the name of the command and its
              arguments.  Setting it to 3  produces  a  detailed  trace  showing  the  result  of
              executing  each  bytecode  instruction.   Note  that  when tcl_traceExec is 2 or 3,
              commands such as set and incr that have been entirely replaced  by  a  sequence  of
              bytecode  instructions  are not shown.  Setting this variable is useful in tracking
              down suspected problems with the bytecode compiler and  interpreter.   It  is  also
              occasionally useful when converting code to use Tcl8.0.

       This  variable  and functionality only exist if TCL_COMPILE_DEBUG was defined during Tcl's
       compilation.

       tcl_wordchars
              The value of this variable is a regular expression that can be set to control  what
              are  considered ``word'' characters, for instances like selecting a word by double-
              clicking in text in Tk.  It is platform dependent.  On Windows, it defaults to  \S,
              meaning anything but a Unicode space character.  Otherwise it defaults to \w, which
              is any Unicode word character (number, letter, or underscore).

       tcl_nonwordchars
              The value of this variable is a regular expression that can be set to control  what
              are  considered  ``non-word''  characters,  for  instances like selecting a word by
              double-clicking in text in Tk.  It is platform dependent.  On Windows, it  defaults
              to  \s, meaning any Unicode space character.  Otherwise it defaults to \W, which is
              anything but a Unicode word character (number, letter, or underscore).

       tcl_version
              When an interpreter is created Tcl initializes this variable to  hold  the  version
              number  for  this  version  of  Tcl  in the form x.y.  Changes to x represent major
              changes  with  probable  incompatibilities  and  changes  to  y   represent   small
              enhancements  and  bug fixes that retain backward compatibility.  The value of this
              variable is returned by the info tclversion command.

OTHER GLOBAL VARIABLES

       The following variables are only guaranteed to exist in tclsh and  wish  executables;  the
       Tcl library does not define them itself but many Tcl environments do.

       argc  The number of arguments to tclsh or wish.

       argv  Tcl list of arguments to tclsh or wish.

       argv0 The  script  that tclsh or wish started executing (if it was specified) or otherwise
             the name by which tclsh or wish was invoked.

       tcl_interactive
             Contains 1 if tclsh or wish is running interactively (no script  was  specified  and
             standard input is a terminal-like device), 0 otherwise.

       The wish executably additionally specifies the following global variable:

       geometry
             If  set,  contains  the  user-supplied geometry specification to use for the main Tk
             window.

SEE ALSO

       eval(3tcl), tclsh(1), wish(1)

KEYWORDS

       arithmetic,  bytecode,  compiler,  error,  environment,  POSIX,   precision,   subprocess,
       variables