Scroll to navigation

tclvars(3tcl) Tcl Built-In Commands tclvars(3tcl)

NAME

tclvars - Tcl 使用的變數

描述 DESCRIPTION

Tcl 庫自動的建立和管理下列全域性變數。除了下面專做說明的地方之外,對特定於應用的程式碼和使用者,這些變數通常應當作為只讀的來對待。

Tcl 把這個變數維護為一個數組,它的元素是這個程序的環境變數。讀取一個元素將返回相應的環境變數的值。設定這個陣列的一個元素將修改相應的環境變數,如果它不存在則建立一個新的。刪除 env 的一個元素將刪除相應的環境變數。對 env 陣列的變更將影響透過象 exec 這樣的命令傳遞給子程序的環境變數。如果刪除了整個 env 陣列,則 Tcl 將停止監視 env 訪問並且將不更新環境變數。
在 Windows 下,任何大小寫形式的環境變數 PATH 和 COMSPEC 都被自動轉換成 大寫的。例如,PATH 環境變數可以被作業系統匯出為“path”、“Path”、“PaTh”、 等,這導致其他簡單 Tcl 程式碼必須支援許多特殊的寫法。Tcl 繼承的所有其他 環境變數保持不變。
在 Macintosh 上,Tcl 把環境變數構造為非現存的全域性環境變數。為 Tcl 建立的環境變數包括:
它持有 Macintosh 的 Chooser 名字。
它也持有 Macintosh 的 Chooser 名字。
到系統目錄的路徑。
到 Apple 選單目錄的路徑。
到控制面板目錄的路徑。
到桌面目錄的路徑。
到系統擴充套件目錄的路徑。
到偏好目錄的路徑。
到列印監控器目錄的路徑。
到網路垃圾箱目錄的路徑。
到垃圾箱目錄的路徑。
到啟動目錄的路徑。
到應用程式的預設目錄的路徑。

你還可以為 Macintosh 建立你自己的環境變數。叫做 Tcl Environment Variables 的一個檔案將被放置到 Mac 系統資料夾中的偏好資料夾中。這個檔案中的每行的形式都是 VAR_NAME=var_data

最後的選擇是把環境變數放置到這個應用的叫做 Tcl Environment Variables 的一個`STR#'資原始檔中。這被認為是更象“Mac 式”而不是 一個 Unix 式樣的環境變數檔案。`STR#'資源中每個條目有與上述相同的格式。源 程式碼檔案 tclMacEnv.c 包含 env 機制的實現。這個檔案包含許多 #define ,它們允許你定製 env 機制來適合你的應用的需要。

在發生了一個錯誤之後,設定這個變數為持有關於錯誤的補充資訊,它的形式易於用程式處理。errorCode 由有一個或多個元素的一個 Tcl 列表組成。這個列表的第一個元素標識錯誤的一個一般的類別,並決定列表餘下部分的格式。Tcl 核心為 errorCode 使用下列格式;個別應用可以定義補充的格式。
在發生一個算術錯誤的時候使用這個格式(例如,在 expr 命令中嘗試除以零)。Code 標識準確的錯誤而 msg 提供一個人可閱讀的對錯誤的描述。Code 將是下列之一:DIVZERO (嘗試除以零)、DOMAIN (如果函式的一個引數在它的作用域之外,比如 acos(-3))、IOVERFLOW (整數溢位)、 OVERFLOW (浮點數溢位)、或 UNKNOWN (如果不能確定錯誤的原因)。
在子程序被一個訊號所終止的時候使用這個格式。errorCode 的第二個元素是這個程序的識別符號(十進位制數)。第三個元素標識導致程序終止的訊號的符號名字;它將是在檔案 signal.h 中包含的名字之一,比如 SIGPIPE。第四個元素是一個描述這個訊號的人可閱讀的短訊息,比如對 SIGPIPE是“write on pipe with no readers”。
在子程序以非零狀態退出的時候使用這個格式。errorCode 的第二個元素是這個程序的識別符號(十進位制數),而第三個元素是這個程序返回的退出程式碼(也是十進位制數)。
在子程序被一個訊號所掛起的時候使用這個格式。errorCode 的第二個元素是這個程序的識別符號,是一個十進位制數。第三個元素識導致程序掛起的訊號的符號名字;它將是在檔案signal.h 中包含的名字之一,比如 SIGTTIN。 第四個元素是一個描述這個訊號的人可閱讀的短訊息,比如對 SIGTTIN 是“background tty read”。
對除了返回錯誤訊息之外沒有其他可獲得的補充資訊的錯誤使用這個格式。在這種情況下 errorCode 將由只有一個單一元素的一個列表組成,這個元素的內容是 NONE
如果 errorCode 的第一個元素是 POSIX,則錯誤發生在一個 POSIX 核心呼叫期間。這個列表的第二個元素將包含發生的錯誤的符號名字,比如 ENOENT;它將是在包含檔案 errno.h 中定義的值之一。這個列表的第三個元素是對應於 errName 的一個人可閱讀的訊息,比如對 ENOENT 是“no such file or directory”。

要設定 errorCode,應用應當使用庫過程比如 Tcl_SetErrorCodeTcl_PosixError,或者呼叫 error 命令。如果使用了這些方法之一,則 Tcl 直譯器將在下個錯誤之後重置這個變數為 NONE

在一個錯誤發生之後,這個字串將包含標識在最新近的錯誤發生時正在執行的 Tcl 命令和過程的一行或多行。它的內容使用棧跟蹤的形式,展示在錯誤發生時呼叫的各個巢狀的 Tcl 命令。
這個變數持有包含系統 Tcl 指令碼庫的一個目錄的名字,比如用於自動裝載的那些目錄。info library 命令返回這個變數的值。關於 Tcl 指令碼庫的詳情請參見 library 手冊條目。 除了 Tcl 指令碼庫之外,每個應用或包通常都有它自己的特定於應用的指令碼庫;每個應用都應該設定名字象 $app_library 這樣的一個全域性變數(這裡的 app 是這個應用的名字)來持有這個應用的庫目錄的網路檔名字。在建立直譯器的時候,透過查詢許多不同目錄直到找到包含一個適當的 Tcl 啟動指令碼的目錄,來設定 tcl_library 的最初的值。如果 TCL_LIBRARY 環境變數存在,則首先訪問它指名的目錄。如果 TCL_LIBRARY 未被設定或不參照一個適當的目錄,則 Tcl 檢查基於在其中編譯(compiled-in)的預設位置的其他一些目錄、包含應用的二進位制檔案的位置、和當前工作目錄。
在建立直譯器的時候 Tcl 初始化這個變數來持有給出當前的 Tcl 補丁級別的一個字串,比如 7.3p2 是Tcl 7.3 的第二次官方補丁,而 7.4b4 是 Tcl 7.4 的第四次 beta 釋出。info patchlevel 命令返回這個值。
這個變數持有一個目錄的列表,它一般指示把包安裝到哪裡。在 Windows 上不使 用它。它典型的包含一個或兩個條目;如果它包含兩個條目,第一個通常是依賴於 平臺的包的目錄(例如,共享庫的二進位制檔案)而第二個通常是平臺無關的包的目錄 (例如,指令碼檔案)。典型的把包安裝為在 $tcl_pkgPath 中的一個條目的 一個子目錄。在 $tcl_pkgPath 中的目錄預設的包含在 auto_path 變數中,所以 package require 命令期間自動的在它們和它們的直接子目 錄中查詢包。注意: 不希望應用修改 tcl_pkgPath。在啟動時它的值被新增 到 auto_path;對 tcl_pkgPath 的變動不會反映到 auto_path 中。如果你想讓 Tcl 來在額外的目錄中查詢包,你應該把這 些目錄的名字新增到 auto_path,而不是 tcl_pkgPath
這是一個關聯陣列,它的元素包含關於應用在其上執行的平臺的資訊,比如作業系統的名字、它的當前發行號、和機器的指令集。總是定義下列元素,但是如果 Tcl 不能檢索到任何有關的資訊,則它們的值將是空串。除此之外,擴充套件和應用可以向這個陣列新增補充的值。預先定義的元素是:

這個機器的本地位元組序: littleEndianbigEndian
如果這個變數存在,則編譯直譯器時啟用了除錯符號。只在 Windows 上存在這個變數,擴充套件作者可以依賴於所裝載的 C 執行時庫來指定裝載哪個包。
這個機器執行的指令集,比如 intelPPC68k、或sun4m。在 UNIX 機器上,用 uname -m 返回這個值。
在這個機器上執行的作業系統的名字,比如 Windows 95Windows NTMacOS、或 SunOS。 在 UNIX 機器上,用 uname -s 返回這個值。在 Windows 95 和 Windows 98 上,返回的值將是 Windows 95 來提供更好的對 Windows 95 的反向相容;要區別二者,請檢查 osVersion
在這個機器上執行的作業系統的版本號。在 UNIX 機器上,用 uname -r 返回這個值。在 Windows 95 上,版本將是 4.0;在 Windows 98 上,版本將是 4.10。
windowsmacintosh、或 unix 之一。它表示這個機器的一般操作環境。
如果這個變數存在,則編譯這個直譯器時啟用了執行緒。
它基於在平臺上獲得的登入資訊標識當前使用者。在 Unix 它源自 USER 或 LOGNAME 環境變數,在 Windows 和 Macintosh 上源自 GetUserName。
這個變數在把浮點數轉換成字串時控制生成的數字的數目。它預設的是 12。對於 IEEE 浮點數 17 位數字是“最佳的”,這樣允許雙精度值在二進位制和字串之間來回轉換而不丟失資訊。但是,使用 17 位數字將禁止任何舍入,這將生成更長,而更不直觀的值。例如,expr 1.4 在設定 tcl_precision 為 17 時返回 1.3999999999999999,而在設定 tcl_precision 為 12 時返回 1.4 。
在一個程序中的所有直譯器共享一個單一的 tcl_precision 值: 在一個直譯器中改變它將同樣影響所有其他直譯器。但是,不允許安全直譯器修改這個變數。
在初始化期間使用這個變數來指示特定於使用者的啟動檔案的名字。如果在特定於應用的初始化中設定了它,則 Tcl 啟動程式碼將檢查這個檔案是否存在,並且如果它存在的話則 source (載入)它。例如,對於 wish ,這個變數被設定成給 Unix 的 ~/.wishrc 和給 Windows 的 ~/wishrc.tcl
這個變數只在 Macintosh 系統上使用。在初始化期間使用這個變數來指示位於應用或擴充套件資源 fork 中的一個特定於應用的 TEXT 資源的名字。如果特定於應用的初始化設定了它,則 Tcl 啟動程式碼將檢查資源是否存在,如果存在則 source 它。例如,Macintosh wish 應用設定這個變數為 tclshrc
設定這個變數的值來控制在位元組碼編譯期間顯示多少跟蹤資訊。預設的,tcl_traceCompile 是零且不顯示資訊。設定 tcl_traceCompile 為 1,在編譯一個過程或頂層命令的時候在標準輸出上生成一行總結。設定它為 2,在標準輸出上詳細的列出在每次編譯期間散發(??? emit)的位元組碼指令。在跟蹤懷疑是 Tcl 編譯器的問題時很有用。在把現存程式碼轉換成 Tcl8.0 時也偶爾有用。
設定這個變數的值來控制在位元組碼執行期間顯示多少跟蹤資訊。預設的,tcl_traceExec 是零而不顯示資訊。設定 tcl_traceExec 為 1,在每次呼叫一個 Tcl 過程的時候在標準輸出上生成一行跟蹤。設定它為 2,在用命令的名字和它的引數呼叫任何Tcl 命令的時候,生成一行輸出。設定它為 3,生成一個詳細的跟蹤,展示每個位元組碼指令的執行結果。注意在 tcl_traceExec 是 2 或 3 的時候,不展示象 set 和 incr 這樣已經被整個替換為一個位元組碼指令序列的命令。在跟蹤懷疑是 Tcl 編譯器和直譯器的問題時很有用。在把現存程式碼轉換成 Tcl8.0 時也偶爾有用。
這個變數的值是一個正則表示式,設定它來控制認把什麼字元認為是“字”字 符。例如在 Tk 的文字框中用雙擊來選擇一個字。它是平臺相關的。在 Windows 上,它預設為 \S,意思是除了 Unicode 空格字元之外的任何字元。其他 平臺上預設為 \w,它是任何 Unicode 字字元(數字、字母、下劃線)。
這個變數的值是一個正則表示式,設定它來控制認把什麼字元認為是“非字” 字元。例如在 Tk 的文字框中用雙擊來選擇一個字。它是平臺相關的。在 Windows 上,它預設為 \s,意思是任何 Unicode 空格字元。其他平臺上缺 省為 \W,它是除了 Unicode 字字元(數字、字母、下劃線)之外的任何字元 。
在建立直譯器的時候,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

8.0 Tcl