【发布时间】:2014-05-21 13:42:01
【问题描述】:
我想将一个模块加载到一个模块文件中(以解决依赖关系)。
我的模块:
#%Module########################################
##
## Modulefile
#
proc ModulesHelp { } {
puts stderr "Env for MyProg"
}
proc addPath {var val} {
prepend-path $var $val
}
module load MyOtherModule
addPath PATH /opt/MyModule/bin
我的其他模块:
#%Module########################################
##
## Modulefile
#
proc ModulesHelp { } {
puts stderr "Env for MyOtherProg"
}
proc addPath {var val} {
prepend-path $var $val
}
addPath PATH /opt/MyOtherModule/bin
当我运行module load MyModule 时,两个模块似乎都已加载但环境不正确:
$module list
Currently Loaded Modulefiles:
1) MyModule 2) MyOtherModule
$echo $PATH
/opt/MyModule/bin:/usr/bin:/bin
如果我在 module load MyOtherModule 行之后的 MyModule 中添加 foreach p [array names env] { set tmp $env($p) } 或至少 set tmp $env(PATH) 行,则环境已正确修改。如果我不使用我的函数addPath,它也可以正常工作,但我直接使用prepend-path 命令,这有点烦人,因为我当然想在addPath 函数中做更多的事情。
任何人都知道发生了什么以及我错过了什么?
【问题讨论】:
标签: environment-variables tcl environment-modules modulefile