Tcl - Special Variables



In Tcl, we classify some of the variables as special variables and they have a predefined usage/functionality. The list of specials variables is listed below.

Sr.No. Special Variable & Description
1

argc

Refers to a number of command-line arguments.

2

argv

Refers to the list containing the command-line arguments.

3

argv0

Refers to the file name of the file being interpreted or the name by which we invoke the script.

4

env

Used for representing the array of elements that are environmental variables.

5

errorCode

Provides the error code for last Tcl error.

6

errorInfo

Provides the stack trace for last Tcl error.

7

tcl_interactive

Used to switch between interactive and non-interactive modes by setting this to 1 and 0 respectively.

8

tcl_library

Used for setting the location of standard Tcl libraries.

9

tcl_pkgPath

Provides the list of directories where packages are generally installed.

10

tcl_patchLevel

Refers to the current patch level of the Tcl interpreter.

11

tcl_platform

Used for representing the array of elements with objects including byteOrder, machine, osVersion, platform, and os.

12

tcl_precision

Refers to the precision i.e. number of digits to retain when converting to floating-point numbers to strings. The default value is 12.

13

tcl_prompt1

Refers to the primary prompt.

14

tcl_prompt2

Refers to the secondary prompt with invalid commands.

15

tcl_rcFileName

Provides the user specific startup file.

16

tcl_traceCompile

Used for controlling the tracing of bytecode compilation. Use 0 for no output, 1 for summary, and 2 for detailed.

17

tcl_traceExec

Used for controlling the tracing of bytecode execution. Use 0 for no output, 1 for summary, and 2 for detailed.

18

tcl_version

Returns the current version of the Tcl interpreter.

The above special variables have their special meanings for the Tcl interpreter.

Examples for using Tcl special variables

Let's see some examples for special variables.

Tcl version

#!/usr/bin/tclsh

puts $tcl_version

When you run the program, you will get a similar output as shown below −

8.6

Tcl Environment Path

#!/usr/bin/tclsh

puts $env(PATH)

When you run the program, you will get a similar output as shown below −

/home/cg/root/GNUstep/Tools:/usr/GNUstep/Local/Tools:/usr/GNUstep/
System/Tools:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/webmaster/.local/bin:/
home/webmaster/bin:/usr/local/scriba/bin:/usr/local/smlnj/
bin:/usr/local/bin/std:/usr/local/bin/extra:/usr/local/fantom/bin:/usr/
local/dart/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/opt/mono/
bin:/opt/mono/lib/mono/4.5:/usr/local/bin:.:/usr/libexec/sdcc:/usr/local/
icon-v950/bin:/usr/local/mozart/bin:/opt/Pawn/bin:/opt/jdk1.7.0_75/bin:/
opt/jdk1.7.0_75/jre/bin:/opt/pash/Source/PashConsole/bin/Debug/

Tcl Package Path

#!/usr/bin/tclsh

puts $tcl_pkgPath

When you run the program, you will get a similar output as shown below −

/usr/lib64/tcl8.6 /usr/share/tcl8.6 /usr/lib64/tk8.6 /usr/share/tk8.6

Tcl Library

#!/usr/bin/tclsh

puts $tcl_library

When you run the program, you will get a similar output as shown below −

/usr/share/tcl8.6

Tcl Patch Level

#!/usr/bin/tclsh

puts $tcl_patchLevel

When you run the program, you will get a similar output as shown below −

8.6.6

Tcl Precision

#!/usr/bin/tclsh

puts $tcl_precision

When you run the program, you will get a similar output as shown below −

0

Tcl Startup File

#!/usr/bin/tclsh

puts $tcl_rcFileName

When you run the program, you will get a similar output as shown below −

~/.tclshrc
Advertisements