为什么在modulefile中运行模块卸载失败?
我是个新手 我发现了一件关于环境模块的有趣事情。 请参阅以下流程 我的linux操作系统是redhat5.8。 我已经安装了环境模块3.2.10、tcl8.6.6、为什么在modulefile中运行模块卸载失败?,module,environment,modulefile,Module,Environment,Modulefile,我是个新手 我发现了一件关于环境模块的有趣事情。 请参阅以下流程 我的linux操作系统是redhat5.8。 我已经安装了环境模块3.2.10、tcl8.6.6、 源初始化/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
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
我的问题是:
虽然modulefile中有moduleunload,但看起来moduleunload$curName语句不起作用
提前感谢您描述的问题来自影响模块(3.2.10版)或类似RedHat的Linux发行版上的最新“环境模块”软件包已修复此问题: 对于固定模块版本,您描述的过程似乎是正确的(在Fedora系统上的模块3.2.10和更高版本上进行了测试):
$ module add qq/61_0
loaded qq/61_0
done 61_0
$ module add qq/61_1
loaded qq/61_1
rm loaded qq
done 61_0
done 61_1
$ module list
Currently Loaded Modulefiles:
1) qq/61_1
$ module add qq/61_2
loaded qq/61_2
rm loaded qq
done 61_1
done 61_2
$ module list
Currently Loaded Modulefiles:
1) qq/61_2