Manpages

NAME

tclvars - Tcl 使 用 的 变 量

描 述 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_SetErrorCodeTcl_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 这 个 机 器 的 本 地 字 节 序 : littleEndianbigEndian

debug 如 果 这 个 变 量 存 在 , 则 编 译 解 释 器 时 启 用 了 调 试 符 号 。 只 在

Windows 上 存 在 这 个 变 量 , 扩 展 作 者 可 以 依 赖 于 所 装 载 的 C 运 行 时 库 来 指 定 装 载 哪 个 包 。
machine
这 个 机 器 执 行 的 指 令 集 , 比 如 intelPPC68k、 或 sun4m。 在 UNIX 机 器 上 , 用 uname -m 返 回 这 个 值 。

os 在 这 个 机 器 上 运 行 的 操 作 系 统 的 名 字 , 比 如

Windows

95Windows NTMacOS、 或 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

windowsmacintosh、 或 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 命 令 返 回 这 个 变 量 的 值 。

参 见 SEE ALSO

eval(n)

关 键 字 KEYWORDS

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

[中 文 版 维 护 人 ]

寒 蝉 退 士

[中 文 版 最 新 更 新 ]

2001/12/10

《 中 国 Linux 论 坛 man 手 册 页 翻 译 计 划 》 :

http://cmpp.linuxforum.net

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh