2014-06-09 7 views
1

Я ищу для запуска скрипта TCL в Matlab напрямую. Моя проблема в том, что я использую гидрологическую модель под названием ParFlow. и поэтому мне нужно загрузить библиотеки:Запустить сценарий TCL из matlab

lappend auto_path $env(PARFLOW_DIR)/bin 
package require parflow 
namespace import Parflow::* 

Но когда я бегу unix('tclsh Run.tcl') на MATLAB У меня есть проблемы с $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) 

Я пытался поставить, используя прямой путь к мусорному ведру, как это:

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)? Я действительно не понимаю, как он загружает библиотеки или как они работают? Любая идея?

ответ

1

Глобальный массив env содержит переменные окружения для процесса. Они могут быть установлены либо во время работы программы (путем записи в этот массив), либо до запуска процесса, выполняющегося , любым механизмом, используемым для установки переменных окружения. В Matlab, вы используете setenv:

setenv('PARFLOW_DIR', '/home/raphael/parflow/parflow') 

В Tcl, эквивалент вещь (идти на верхней сценария) является:

set ::env(PARFLOW_DIR) /home/raphael/parflow/parflow 

Помните, как только вы начинаете ход процесса, он больше не видит изменений в переменных среды в своем родительском процессе; дочерний процесс наследует все, что было определено на момент запуска родительского процесса.

+0

Спасибо! Это работает ! Я также использовал 'set env (PARFLOW_DIR)/home/raphael/parflow/parflow', я думаю, что это то же самое, что' set :: env (PARFLOW_DIR)/home/raphael/parflow/parflow'? – Rafnuss

Смежные вопросы