我希望直接在matlab中运行TCL脚本。 我的问题是我使用的是名为ParFlow的水文模型。因此我需要加载库:
lappend auto_path $env(PARFLOW_DIR)/bin
package require parflow
namespace import Parflow::*
但是当我在matlab上运行unix('tclsh Run.tcl')
时,我遇到$env(PARFLOW_DIR)
的问题:
no such variable
(read trace on "env(PARFLOW_DIR)")
invoked from within
"lappend auto_path $env(PARFLOW_DIR)/bin "
(file "Run.tcl" line 6)
我试图像这样使用直接路径到bin:
lappend auto_path /home/raphael/parflow/parflow/bin
但后来又出现了另一个错误:
error reading package index file /home/raphael/parflow/parflow/bin/pkgIndex.tcl: can't read "::env(PARFLOW_DIR)": no such variable
有没有办法定义$env(PARFLOW_DIR)
?我真的不明白它如何加载库或它是如何工作的?
有什么想法吗?
答案 0 :(得分:1)
全局env
数组包含进程的环境变量。这些可以在程序运行期间(通过写入该数组)或在开始运行的过程之前通过用于设置环境变量的任何机制来设置。在Matlab中,您使用setenv
:
setenv('PARFLOW_DIR', '/home/raphael/parflow/parflow')
在Tcl中,相同的事情(进入脚本的 top )是:
set ::env(PARFLOW_DIR) /home/raphael/parflow/parflow
请记住,一旦启动进程,它就不再在其父进程中看到对环境变量的任何更改;子进程继承父进程启动它时定义的任何内容。