我是新手。
我发现了一个关于环境模块的有趣的事情。请看以下流程。
我的linux操作系统是redhat5.8。我已经安装了环境模块 3.2.10, tcl8.6.6,
- 源 init/csh 成功。
- 我分别写了一个 qq/{61_0, 61_1, 61_2} 模块文件。
以 qq/61_0 为例。
cat 61_0:
\#%Module1.0
set curNameVersion [module-info name]
set curName [lindex [split $curNameVersion "/"] 0]
set var_name "61_PAT"
set install_path /soft/qq/61_0
if { [module-info mode load] } {
puts stderr "loaded $curNameVersion"
if { [info exists env($var_name)] } {
if { $env($var_name) != $install_path } {
puts stderr "rm loaded $curName"
module unload $curName
}
}
}
setenv $var_name $install_path
puts stderr "done 61_0"
.
.
61_1 modulefile is basically similar to 61_0 except set install_path /soft/qq/61_1 and puts stderr "done 61_1"
61_2 modulefile is basically similar to 61_0 except set install_path /soft/qq/61_2 and puts stderr "done 61_2"
3.
^Linux^: module add qq/61_0
loaded qq/61_0
done 61_0
^Linux^: module add qq/61_1
loaded qq/61_1
rm loaded qq
loaded qq/61_0
done 61_0
done 61_1
^Linux^: module add qq/61_2
done 61_0
done 61_0
done 61_0
..
...
done 61_0
done 61_0
done 61_2
4.
^Linux^: module list
Currently Loaded Modulefiles:
1) qq/61_0 2) qq/61_1 3) qq/61_2
^Linux^: echo $_LMFILES_
/software/qq/61_0:/software/qq/61_1:/software/qq/61_2
^Linux^: echo $LOADEDMODULES
qq/61_0:qq/61_1:qq/61_2
我的问题是:
- 不应该为同一个工具qq加载多个版本,当加载另一个版本时,它应该首先模块rm other。
虽然我在模块文件中有模块卸载,但看起来模块卸载 $curName 语句不起作用 - 运行'module add qq/61_1'时,表示先rm加载qq/61_0,再执行qq/61_0模块文件,因为是卸载qq/61_0,所以不应该输出行'loaded qq/61_0 '。但它输出“已加载 qq/61_0”。为什么?
- 为什么运行'module add qq/61_2'时有这么多输出'done 61_0'?
- echo $ LMFILES和 echo $LOADEDMODULES 已经证明它存在同一个工具的多个版本,如何保持只加载一个版本?
有人可以帮助我吗?提前致谢