当来自另一台机器的 运行 时,无法在 TCL 中反映 auto_path 的设置

Not able to reflect the setting of auto_path in TCL when running from another machine

在我的机器上 /usr/local/tools/Unix/tcl_pkgs/tclx/tclX8.4/ 下安装了 tcllib 并获取了下面的脚本

#!/bin/sh
set ::auto_path [linsert $auto_path 0 /usr/local/tools/Unix/tcl_pkgs/tclx/tclX8.4/]
set ::env(TCLLIBPATH) "/usr/local/tools/Unix/tcl_pkgs/tclx/tclX8.4/"
set ::env(ITCL_LIBRARY) "/usr/local/tools/Unix/tcl_pkgs/tclx/tclX8.4/itcl3.4.1/"

之前

package require Tclx

导出 tcllib 和 itcl 路径的说明,但无法正确设置 auto_path。当我 运行 我的测试时,总是出现以下错误。正在从错误的路径读取 tclIndex。

couldn't open "/usr/lib64/tcl8.5/tclIndex": no such file or directory
while executing
"open [file join $dir tclIndex]"

Tcl 和 shell 处理变量的语法不同。此外,auto_path 只是一个 Tcl 变量 而根本不是 shell 变量。它是根据各种其他事物的内容构建的(包括在编译 Tcl 库期间嵌入的一些值)。其中之一是 TCLLIBPATH 环境变量,它包含一个 Tcl 列表 (即 space 分隔列表)目录放在auto_path建成时

一旦 Tcl 解释器是 运行,设置 TCLLIBPATH 的值就没有意义了;如果已设置,它已经使用了它。在您的代码中,您不妨直接操作 auto_path 本身。

/bin/sh shell 脚本中,您将 TCLLIBPATH 设置为:

export TCLLIBPATH="/usr/local/tools/Unix/tcl_pkgs/tclx/tclX8.4"

此外,与 shell 脚本一样, 您需要确保没有在子 shell 中设置环境变量,除非您仅在该子 shell.

的子进程中使用它们