卸载模块时,将取消设置在环境模块中使用setenv命令覆盖的环境变量。在文档it is stated that environment variables can be restored中,但没有提供任何方法。
我尝试使用条件执行,但以下模块(~/privatemodules/test)无法恢复环境变量FOO。
#%Module########################################################################
##
## test modulefile
##
proc ModulesHelp { } {
puts stderr "This module modifies an environment variable FOO."
}
module-whatis "Modify environment varible FOO"
if { [module-info mode load] } {
setenv ORIGINAL_FOO $::env(FOO)
setenv FOO "123"
} elseif { [module-info mode unload] } {
setenv FOO $::env(ORIGINAL_FOO)
unsetenv ORIGINAL_FOO
}例如,我得到:
$ export FOO=bar
$ module load use.own && module load test
$ echo $FOO
123
$ module unload test
$ echo $FOO
$有没有办法恢复FOO的原始值?
发布于 2021-09-21 19:26:38
在文档中可以找到解决方案。unsetenv使用额外的参数将环境变量设置为新值。所以模块文件应该是:
#%Module########################################################################
##
## test modulefile
##
proc ModulesHelp { } {
puts stderr "This module modifies an environment variable FOO."
}
module-whatis "Modify environment varible FOO"
if { [module-info mode load] } {
setenv ORIGINAL_FOO $::env(FOO)
setenv FOO "123"
} elseif { [module-info mode unload] } {
unsetenv FOO $::env(ORIGINAL_FOO)
}这在版本5中发生了变化。
https://stackoverflow.com/questions/69274347
复制相似问题