关于Tcl源代码的问题

时间:2011-06-28 14:54:13

标签: tcl

我有一个名为test7.tcl的文件:

namespace eval ::dai {
   variable name "ratzip"
   variable birthday "1982"
   proc hello {} {
      variable name
      variable birthday
      puts "Hello, I am $name birthday is $birthday"
   }
}

我希望以这种方式将此文件源化为另一个名为test8.tcl的文件:

source test7.tcl

::dai::hello

但是它给了我错误:无法读取文件“test7.tcl”:没有这样的文件或目录

但这两个文件在同一个文件夹下,发生了什么?

3 个答案:

答案 0 :(得分:11)

要获取与当前正在执行的脚本位于同一目录中的文件,请使用:

source [file join [file dirname [info script]] "test7.tcl"]

请注意,此不会在外部脚本(在您的情况下为test8.tcl)中定义的过程内工作,因为它们通常在源完成后调用。如果是这种情况,最简单的解决方法是将info script的输出保存在外部脚本中的变量中(或者只是立即获取所有文件而不是懒惰以获得最佳方法)。

答案 1 :(得分:4)

使用source [file join [file dirname [info script]] test7.tcl] - 这样您就可以通过从执行source的文件的完整路径名构造的完整路径名来获取目标文件;无论你当前目录在执行期间是什么,这都会有效。

答案 2 :(得分:2)

您不必指定相对于test8.tcl路径而是相对于当前工作目录的源文件的路径。例如。使用绝对路径:

source /path/to/test7.tcl
相关问题