描述 DESCRIPTION
Tcl
库自动的建立和管理下列全局变量。除了下面专做说明的地方之外,对特定于应用的代码和用户,这些变量通常应当作为只读的来对待。
- env
- Tcl
把这个变量维护为一个数组,它的元素是这个进程的环境变量。读取一个元素将返回相应的环境变量的值。设置这个数组的一个元素将修改相应的环境变量,如果它不存在则建立一个新的。删除
env
的一个元素将删除相应的环境变量。对
env
数组的变更将影响通过象
exec
这样的命令传递给子进程的环境变量。如果删除了整个
env 数组,则 Tcl
将停止监视 env
访问并且将不更新环境变量。
在 Windows
下,任何大小写形式的环境变量
PATH 和 COMSPEC 都被自动转换成
大写的。例如,PATH
环境变量可以被操作系统导出为“path”、“Path”、“PaTh”、
等,这导致其他简单 Tcl
代码必须支持许多特殊的写法。Tcl
继承的所有其他
环境变量保持不变。
在 Macintosh 上,Tcl
把环境变量构造为非现存的全局环境变量。为
Tcl 建立的环境变量包括:
- LOGIN
- 它持有 Macintosh 的 Chooser
名字。
- USER
- 它也持有 Macintosh 的 Chooser
名字。
- SYS_FOLDER
- 到系统目录的路径。
- APPLE_M_FOLDER
- 到 Apple
菜单目录的路径。
- CP_FOLDER
- 到控制面板目录的路径。
- DESK_FOLDER
- 到桌面目录的路径。
- EXT_FOLDER
- 到系统扩展目录的路径。
- PREF_FOLDER
- 到偏好目录的路径。
- PRINT_MON_FOLDER
- 到打印监控器目录的路径。
- SHARED_TRASH_FOLDER
- 到网络垃圾箱目录的路径。
- TRASH_FOLDER
- 到垃圾箱目录的路径。
- START_UP_FOLDER
- 到启动目录的路径。
- HOME
- 到应用程序的缺省目录的路径。
你还可以为 Macintosh
建立你自己的环境变量。叫做
Tcl Environment Variables
的一个文件将被放置到
Mac
系统文件夹中的偏好文件夹中。这个文件中的每行的形式都是
VAR_NAME=var_data。
最后的选择是把环境变量放置到这个应用的叫做
Tcl Environment Variables
的一个`STR#'资源文件中。这被认为是更象“Mac
式”而不是 一个 Unix
式样的环境变量文件。`STR#'资源中每个条目有与上述相同的格式。源
代码文件 tclMacEnv.c 包含 env
机制的实现。这个文件包含许多
#define ,它们允许你定制 env
机制来适合你的应用的需要。
- errorCode
- 在发生了一个错误之后,设置这个变量为持有关于错误的补充信息,它的形式易于用程序处理。errorCode
由有一个或多个元素的一个
Tcl
列表组成。这个列表的第一个元素标识错误的一个一般的类别,并决定列表余下部分的格式。Tcl
核心为 errorCode
使用下列格式;个别应用可以定义补充的格式。
- ARITH code
msg
- 在发生一个算术错误的时候使用这个格式(例如,在
expr
命令中尝试除以零)。Code
标识准确的错误而
msg
提供一个人可阅读的对错误的描述。Code
将是下列之一:DIVZERO
(尝试除以零)、DOMAIN
(如果函数的一个参数在它的作用域之外,比如
acos(-3))、IOVERFLOW (整数溢出)、
OVERFLOW (浮点数溢出)、或
UNKNOWN
(如果不能确定错误的原因)。
- CHILDKILLED
pid sigName msg
- 在子进程被一个信号所终止的时候使用这个格式。errorCode
的第二个元素是这个进程的标识符(十进制数)。第三个元素标识导致进程终止的信号的符号名字;它将是在文件
signal.h
中包含的名字之一,比如
SIGPIPE。第四个元素是一个描述这个信号的人可阅读的短消息,比如对
SIGPIPE是“write on pipe with no
readers”。
- CHILDSTATUS
pid code
- 在子进程以非零状态退出的时候使用这个格式。errorCode
的第二个元素是这个进程的标识符(十进制数),而第三个元素是这个进程返回的退出代码(也是十进制数)。
- CHILDSUSP
pid sigName msg
- 在子进程被一个信号所挂起的时候使用这个格式。errorCode
的第二个元素是这个进程的标识符,是一个十进制数。第三个元素识导致进程挂起的信号的符号名字;它将是在文件signal.h
中包含的名字之一,比如
SIGTTIN。
第四个元素是一个描述这个信号的人可阅读的短消息,比如对
SIGTTIN 是“background tty read”。
- NONE
- 对除了返回错误消息之外没有其他可获得的补充信息的错误使用这个格式。在这种情况下
errorCode
将由只有一个单一元素的一个列表组成,这个元素的内容是
NONE。
- POSIX errName
msg
- 如果 errorCode
的第一个元素是
POSIX,则错误发生在一个
POSIX
内核调用期间。这个列表的第二个元素将包含发生的错误的符号名字,比如
ENOENT;它将是在包含文件
errno.h
中定义的值之一。这个列表的第三个元素是对应于
errName
的一个人可阅读的消息,比如对
ENOENT 是“no such file or
directory”。
要设置
errorCode,应用应当使用库过程比如
Tcl_SetErrorCode 和
Tcl_PosixError,或者调用 error
命令。如果使用了这些方法之一,则
Tcl
解释器将在下个错误之后重置这个变量为
NONE。
- errorInfo
- 在一个错误发生之后,这个字符串将包含标识在最新近的错误发生时正在执行的
Tcl
命令和过程的一行或多行。它的内容使用栈跟踪的形式,展示在错误发生时调用的各个嵌套的
Tcl 命令。
- tcl_library
- 这个变量持有包含系统
Tcl
脚本库的一个目录的名字,比如用于自动装载的那些目录。info
library
命令返回这个变量的值。关于
Tcl
脚本库的详情请参见
library 手册条目。 除了
Tcl
脚本库之外,每个应用或包通常都有它自己的特定于应用的脚本库;每个应用都应该设置名字象
$app_library
这样的一个全局变量(这里的
app
是这个应用的名字)来持有这个应用的库目录的网络文件名字。在建立解释器的时候,通过查找许多不同目录直到找到包含一个适当的
Tcl
启动脚本的目录,来设置
tcl_library
的最初的值。如果
TCL_LIBRARY
环境变量存在,则首先访问它指名的目录。如果
TCL_LIBRARY
未被设置或不参照一个适当的目录,则
Tcl
检查基于在其中编译(compiled-in)的缺省位置的其他一些目录、包含应用的二进制文件的位置、和当前工作目录。
- tcl_patchLevel
- 在建立解释器的时候
Tcl
初始化这个变量来持有给出当前的
Tcl
补丁级别的一个字符串,比如
7.3p2 是Tcl 7.3
的第二次官方补丁,而
7.4b4 是 Tcl 7.4 的第四次 beta
发布。info patchlevel
命令返回这个值。
- tcl_pkgPath
- 这个变量持有一个目录的列表,它一般指示把包安装到哪里。在
Windows 上不使
用它。它典型的包含一个或两个条目;如果它包含两个条目,第一个通常是依赖于
平台的包的目录(例如,共享库的二进制文件)而第二个通常是平台无关的包的目录
(例如,脚本文件)。典型的把包安装为在
$tcl_pkgPath
中的一个条目的
一个子目录。在
$tcl_pkgPath
中的目录缺省的包含在
auto_path 变量中,所以
package require
命令期间自动的在它们和它们的直接子目
录中查找包。注意:
不希望应用修改
tcl_pkgPath。在启动时它的值被添加
到 auto_path;对 tcl_pkgPath
的变动不会反映到
auto_path 中。如果你想让
Tcl
来在额外的目录中查找包,你应该把这
些目录的名字添加到
auto_path,而不是
tcl_pkgPath。
- tcl_platform
- 这是一个关联数组,它的元素包含关于应用在其上运行的平台的信息,比如操作系统的名字、它的当前发行号、和机器的指令集。总是定义下列元素,但是如果
Tcl
不能检索到任何有关的信息,则它们的值将是空串。除此之外,扩展和应用可以向这个数组添加补充的值。预先定义的元素是:
- byteOrder
- 这个机器的本地字节序:
littleEndian 或 bigEndian。
- debug
- 如果这个变量存在,则编译解释器时启用了调试符号。只在
Windows
上存在这个变量,扩展作者可以依赖于所装载的
C
运行时库来指定装载哪个包。
- machine
- 这个机器执行的指令集,比如
intel、PPC、68k、或sun4m。在
UNIX 机器上,用 uname -m
返回这个值。
- os
- 在这个机器上运行的操作系统的名字,比如
Windows 95、Windows
NT、MacOS、或 SunOS。 在
UNIX 机器上,用 uname -s
返回这个值。在 Windows 95
和 Windows 98
上,返回的值将是
Windows 95 来提供更好的对
Windows 95
的反向兼容;要区别二者,请检查
osVersion。
- osVersion
- 在这个机器上运行的操作系统的版本号。在
UNIX 机器上,用 uname -r
返回这个值。在 Windows 95
上,版本将是 4.0;在
Windows 98 上,版本将是
4.10。
- platform
- windows、macintosh、或 unix
之一。它表示这个机器的一般操作环境。
- threaded
- 如果这个变量存在,则编译这个解释器时启用了线程。
- user
- 它基于在平台上获得的登录信息标识当前用户。在
Unix 它源自 USER 或 LOGNAME
环境变量,在 Windows 和
Macintosh 上源自 GetUserName。
- tcl_precision
- 这个变量在把浮点数转换成字符串时控制生成的数字的数目。它缺省的是
12。对于 IEEE 浮点数 17
位数字是“最佳的”,这样允许双精度值在二进制和字符串之间来回转换而不丢失信息。但是,使用
17
位数字将禁止任何舍入,这将生成更长,而更不直观的值。例如,expr
1.4 在设置 tcl_precision 为 17
时返回
1.3999999999999999,而在设置
tcl_precision 为 12 时返回 1.4
。
在一个进程中的所有解释器共享一个单一的
tcl_precision 值:
在一个解释器中改变它将同样影响所有其他解释器。但是,不允许安全解释器修改这个变量。
- tcl_rcFileName
- 在初始化期间使用这个变量来指示特定于用户的启动文件的名字。如果在特定于应用的初始化中设置了它,则
Tcl
启动代码将检查这个文件是否存在,并且如果它存在的话则
source
(载入)它。例如,对于
wish
,这个变量被设置成给
Unix 的 ~/.wishrc 和给 Windows 的
~/wishrc.tcl。
- tcl_rcRsrcName
- 这个变量只在 Macintosh
系统上使用。在初始化期间使用这个变量来指示位于应用或扩展资源
fork
中的一个特定于应用的
TEXT
资源的名字。如果特定于应用的初始化设置了它,则
Tcl
启动代码将检查资源是否存在,如果存在则
source 它。例如,Macintosh
wish
应用设置这个变量为
tclshrc。
- tcl_traceCompile
- 设置这个变量的值来控制在字节码编译期间显示多少跟踪信息。缺省的,tcl_traceCompile
是零且不显示信息。设置
tcl_traceCompile 为
1,在编译一个过程或顶层命令的时候在标准输出上生成一行总结。设置它为
2,在标准输出上详细的列出在每次编译期间散发(???
emit)的字节码指令。在跟踪怀疑是
Tcl
编译器的问题时很有用。在把现存代码转换成
Tcl8.0 时也偶尔有用。
- tcl_traceExec
- 设置这个变量的值来控制在字节码执行期间显示多少跟踪信息。缺省的,tcl_traceExec
是零而不显示信息。设置
tcl_traceExec 为
1,在每次调用一个 Tcl
过程的时候在标准输出上生成一行跟踪。设置它为
2,在用命令的名字和它的参数调用任何Tcl
命令的时候,生成一行输出。设置它为
3,生成一个详细的跟踪,展示每个字节码指令的执行结果。注意在
tcl_traceExec 是 2 或 3
的时候,不展示象 set
和 incr
这样已经被整个替换为一个字节码指令序列的命令。在跟踪怀疑是
Tcl
编译器和解释器的问题时很有用。在把现存代码转换成
Tcl8.0 时也偶尔有用。
- tcl_wordchars
- 这个变量的值是一个正则表达式,设置它来控制认把什么字符认为是“字”字
符。例如在 Tk
的文本框中用双击来选择一个字。它是平台相关的。在
Windows 上,它缺省为
\S,意思是除了 Unicode
空格字符之外的任何字符。其他
平台上缺省为
\w,它是任何 Unicode
字字符(数字、字母、下划线)。
- tcl_nonwordchars
- 这个变量的值是一个正则表达式,设置它来控制认把什么字符认为是“非字”
字符。例如在 Tk
的文本框中用双击来选择一个字。它是平台相关的。在
Windows 上,它缺省为
\s,意思是任何 Unicode
空格字符。其他平台上缺
省为 \W,它是除了 Unicode
字字符(数字、字母、下划线)之外的任何字符
。
- tcl_version
- 在建立解释器的时候,Tcl
初始化这个变量来持有这个版本的
Tcl 的版本号,形式是
x.y。对 x
的变更表示可能导致不兼容的较大的变化,对
y
的变更表示保持反向兼容的小增强和缺陷修理,info
tclversion
命令返回这个变量的值。
关键字 KEYWORDS
arithmetic, bytecode, compiler, error, environment, POSIX,
precision, subprocess, variables
《中国 Linux 论坛 man
手册页翻译计划》:
http://cmpp.linuxforum.net
跋
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh