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.
Let's see some examples for special variables.
#!/usr/bin/tclsh puts $tcl_version
When you run the program, you will get a similar output as shown below −
8.6
#!/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/
#!/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
#!/usr/bin/tclsh puts $tcl_library
When you run the program, you will get a similar output as shown below −
/usr/share/tcl8.6
#!/usr/bin/tclsh puts $tcl_patchLevel
When you run the program, you will get a similar output as shown below −
8.6.6
#!/usr/bin/tclsh puts $tcl_precision
When you run the program, you will get a similar output as shown below −
0
#!/usr/bin/tclsh puts $tcl_rcFileName
When you run the program, you will get a similar output as shown below −
~/.tclshrc