TCL列出运行脚本的相对路径

TCL list the relative path of running script

我正在寻找保存运行 tcl 脚本当前路径的代码。我已经找到了一个代码,但它不起作用。

proc getScriptDirectory {} {
    set dispScriptFile [file normalize [info script]]
    set scriptFolder [file dirname $dispScriptFile]
    return $scriptFolder
}

有人有想法吗?

info script 命令有效,但仅当 脚本 为 运行 且其创建的过程为 运行 时无效。您必须在代码运行时保存该值,以便稍后使用。

# The two-argument version of [variable] initialises the variable's value
variable dispScriptFile [file normalize [info script]]

proc getScriptDirectory {} {
    variable dispScriptFile
    set scriptFolder [file dirname $dispScriptFile]
    return $scriptFolder
}

以这种方式执行时,变量污染通常不会出现重大问题,因为您可以在您正在定义的命名空间中使用变量,而且几乎总是在您需要时定义一个命名空间。