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

Path TCL列出运行脚本的相对路径,path,tcl,relative-path,Path,Tcl,Relative Path,我寻找一个代码来保存运行tcl脚本的当前路径。我已经找到了一个代码,但它不起作用 proc getScriptDirectory {} { set dispScriptFile [file normalize [info script]] set scriptFolder [file dirname $dispScriptFile] return $scriptFolder } 有人知道吗?命令info 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
}

这样做通常不会出现变量污染的严重问题,因为您可以在定义的命名空间中使用变量,并且几乎总是在需要时定义命名空间。

使用
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
}

这样做通常不会造成变量污染,因为您可以在定义的名称空间中使用变量,而且几乎总是在需要时定义名称空间。

对不起,我解释得很糟糕。剧本已经完成了他的工作。在本文末尾,我想将当前路径保存在一个变量中。
info frame
可能会有所帮助。但这是一个我只会用于调试,而不是用于生产的黑客。对不起,我解释得很糟糕。剧本已经完成了他的工作。在本文末尾,我想将当前路径保存在一个变量中。
info frame
可能会有所帮助。但这是一个我只会用于调试,而不是用于生产的黑客。