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