我想将一个模块加载到一个模块文件中(以解决依赖关系)。
我的模块:
#%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
如果我添加该行foreach p [array names env] { set tmp $env($p) }
或至少set tmp $env(PATH)
在该module load MyOtherModule
行之后的 MyModule 中,则正确修改了环境。如果我不使用我的函数addPath
但我prepend-path
直接使用命令,它也可以正常工作,这有点烦人,因为我当然想在addPath
函数中做更多的事情。
任何人都知道发生了什么以及我错过了什么?