我在运行Tcl脚本时遇到困难

我在运行Tcl脚本时遇到困难,tcl,Tcl,我已经开始学习TCL脚本语言。我使用ActivateState Tcl Devkit 5.3.0。 当我创建新模拟器时,会出现如下错误: invalid command name "new" while executing "new Simulator" invoked from within "set ns [new Simulator]" 无效的命令名“new” 执行时 “新模拟器” 从内部调用 “设置ns[新模拟器]” Tcl中没有命令new 所以它是由某个包或某个修改过的

我已经开始学习TCL脚本语言。我使用ActivateState Tcl Devkit 5.3.0。 当我创建新模拟器时,会出现如下错误:

invalid command name "new" while executing "new Simulator" invoked from within "set ns [new Simulator]" 无效的命令名“new” 执行时 “新模拟器” 从内部调用 “设置ns[新模拟器]”
Tcl中没有命令
new

所以它是由某个包或某个修改过的shell提供的

假设您使用ns2或类似的东西,您需要使用适当的shell或通过
package require
将包加载到正常的tclsh shell中。

如果您使用的是ns(几个小时前我遇到了完全相同的错误,所以我想是^^),您可以尝试以下命令:

ns your_tcl_script.tcl
如果ns安装正确,它将为您创建链接


祝您度过愉快的一天

更具体地说,
new
对Tcl没有任何特殊意义(尽管在8.6中它是一个类方法名称)。我不确定什么对象系统定义了
新的
命令;它不是TclOO、Itcl、XOTcl或Snit.OTcl()的一部分,因为NS2网络模拟器使用的是
new
命令。在某些示例中,它们总是使用“new”。如何验证包是否正确包含,我已在我的./profile文件“LD_LIBRARY_PATH=“/home/karl/ns-allinone-2.35/OTcl-1.14”中设置了以下行“。仍在获取错误。Tcl不使用LD_LIBRARY_PATH(好吧,仅用于加载。因此,在
LD
动态链接器的帮助下,它被称为LD_LIBRARY_PATH)。通常Tcl会查看
::auto_path
全局变量的值以及包的立即子目录(例如pkgIndex.Tcl文件)。如果在包中没有看到
pkgIndex.tcl
文件,则需要创建一个文件,或者使用
load
source
命令直接加载库。