描述 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