开发者

modulefile - module unload is not unsetting environment variables

I have a very simple modulefile:

#%Module1.0#####################################################################
puts stderr "Loading personal environment"
proc ModulesHelp { } {
    puts stderr "\tLoads personal environment"
    puts stderr ""
}
setenv MYTEMPVAR sometext

And here is my command line:

> env | grep MYTEMPVAR
> module load ~/wa/example_modulefile
Loading personal environment
> env | grep MYTEMPVAR
MYTEMPVAR=sometext
> module unload ~/wa/example_modulefile
> env | grep MYTEMPVAR
MYTEMPVAR=sometext

According to the modulefile man page unload module command was supposed to turn all setenv's to unsetenv but it doesn't seem to be working. Does anyone know what I might be doing wrong here?

More information:

> module --version
VERSION=3.2.6
DATE=2007-02-14

AUTOLOADPAT开发者_运维问答H=undef
BASEPREFIX="/usr/share"
BEGINENV=99
CACHE_AVAIL=undef
DEF_COLLATE_BY_NUMBER=undef
DOT_EXT=""
EVAL_ALIAS=1
HAS_BOURNE_FUNCS=1
HAS_BOURNE_ALIAS=1
HAS_TCLXLIBS=undef
HAS_X11LIBS=1
LMSPLIT_SIZE=undef
MODULEPATH="/company/tech/tools/modules/sites/$SITE/Linux/:/company/tech/tools/modules/projects"
MODULES_INIT_DIR="/usr/share/Modules/init"
PREFIX="/usr/share/Modules"
TCL_VERSION="8.4"
TCL_PATCH_LEVEL="8.4.19"
TMP_DIR="/tmp"
USE_FREE=undef
VERSION_MAGIC=1
VERSIONPATH=undef
WANTS_VERSIONING=0
WITH_DEBUG_INFO=undef

Hello World

> env | grep SHELL
SHELL=/bin/tcsh

For those unfamiliar with modulefiles (they do not seem to be that popular):

  • modulefile is a simple bit of code that set or add entries to the PATH, MANPATH, or other environment variables
  • modulefiles hide the notion of different types of shells
  • modulefiles are written in the Tool Command Language, Tcl and are interpreted by the modulecmd program via the module user interface


Newer versions of Modules (>= 4.0) correctly unload this full path modulefile.

With older versions, the module unload command does not correctly match the full path modulefile passed on the command line with the currently loaded module. As a result no module is unloaded.

Reproductible issue on older version (< 4.0):

$ module -V | grep ^VERSION=
VERSION=3.2.11
$ module load ~/modules/test
$ module list
Currently Loaded Modulefiles:
  1) /home/user/modules/test
$ module unload ~/modules/test
$ module list
Currently Loaded Modulefiles:
  1) /home/user/modules/test

As evil otto said, on older module version, short module name has to be used to unload this modulefile

$ module list
Currently Loaded Modulefiles:
  1) /home/user/modules/test
$ module unload test
$ module list
No Modulefiles Currently Loaded.

Expected behavior obtained on recent module version:

$ module -V
Modules Release 4.1.3 (2018-06-18)
$ module load ~/modules/test
$ module list
Currently Loaded Modulefiles:
 1) /home/user/modules/test  
$ module unload ~/modules/test
$ module list
No Modulefiles Currently Loaded.


This is apparently working as intended: http://sourceforge.net/tracker/?func=detail&aid=2384340&group_id=15538&atid=115538

It seems you are expected to run module unload example_modulefile without giving it the full path to the module file.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜