Back to top

Environment Modules Documentation

The Environment Modules package provides for the dynamic modification of a user's environment via modulefiles. Modules can be loaded and unloaded dynamically and atomically, in a clean fashion. All popular shells are supported, including bash, ksh, zsh, sh, csh, tcsh, as well as some scripting languages such as perl.

Modules helps to maintain multiple versions of the same software and lets user load/unload required version dynamically into their environment.

Now to some examples.

user@computenode:~> module --help

  Modules Release 3.2.6 2007-02-14 (Copyright GNU GPL v2 1991):

  Usage: module [ switches ] [ subcommand ] [subcommand-args ]

Switches:
        -H|--help               this usage info
        -V|--version            modules version & configuration options
        -f|--force              force active dependency resolution
        -t|--terse              terse    format avail and list format
        -l|--long               long     format avail and list format
        -h|--human              readable format avail and list format
        -v|--verbose            enable  verbose messages
        -s|--silent             disable verbose messages
        -c|--create             create caches for avail and apropos
        -i|--icase              case insensitive
        -u|--userlvl <lvl>      set user level to (nov[ice],exp[ert],adv[anced])
  Available SubCommands and Args:
        + add|load              modulefile [modulefile ...]
        + rm|unload             modulefile [modulefile ...]
        + switch|swap           [modulefile1] modulefile2
        + display|show          modulefile [modulefile ...]
        + avail                 [modulefile [modulefile ...]]
        + use [-a|--append]     dir [dir ...]
        + unuse                 dir [dir ...]
        + update
        + refresh
        + purge
        + list
        + clear
        + help                  [modulefile [modulefile ...]]
        + whatis                [modulefile [modulefile ...]]
        + apropos|keyword       string
        + initadd               modulefile [modulefile ...]
        + initprepend           modulefile [modulefile ...]
        + initrm                modulefile [modulefile ...]
        + initswitch            modulefile1 modulefile2
        + initlist
        + initclear

"module --help" displays all the options that can be passed to the module command

user@computenode:~> module -l avail
- Package -----------------------------+- Versions -+- Last mod. ------
/usr/local/Modules/versions:
3.2.6                                                2008/02/04 17:21:09

/usr/local/Modules/3.2.6/modulefiles:
AFNI/20091231                                        2010/03/12  5:09:14
CASAVA/1008                                          2010/06/21 15:02:03
CASAVA/1010                                          2010/06/21 15:02:03
CASAVA/1600                                          2010/06/21 15:03:04
CASAVA/1700                                          2010/07/21 13:38:49
...

So, "module avail" shows all the available modules in the system. Above, you can see that multiple versions of CASAVA are available for the user to work with. If a user did "module load CASAVA", CASAVA version 1.7 (latest version) will be loaded in his environment by default.

user@computenode:~> module whatis torque
torque               : adds Torque to your environment variables

"module whatis <modulename>" gives a short description of what a specific module file does.

user@computenode:~> module list
Currently Loaded Modulefiles:
 1) modules/3.2.6   2) torque/2.3.6    3) pbstools/1.4    4) c3/4            5) moab/5.3.1      6) gold/2200
user@computenode:~> which qstat
/usr/local/torque-2.3.6/bin/qstat
user@computenode:~>

"module list" shows all the currently loaded modules in your environment. You can see that "qstat" is available within Torque and the PATH is automatically added to your environment by modules.

user@computenode:~> module display torque
-------------------------------------------------------------------
/usr/local/Modules/3.2.6/modulefiles/torque/2.3.6:

module-whatis    adds Torque to your environment variables
setenv           PBSHOME /usr/local/torque-2.3.6
prepend-path     PATH /usr/local/torque-2.3.6/bin
prepend-path     LD_LIBRARY_PATH /usr/local/torque-2.3.6/lib
prepend-path     MANPATH /usr/local/torque-2.3.6/man
setenv           PBS_SERVER_HOME /var/spool/torque-2.3.6
-------------------------------------------------------------------

"module display <modulename>" displays detailed information on what environment variables this module file changes/modifies.

user@computenode:~> module rm torque
user@computenode:~> which qstat
which: no qstat in (/usr/local/gold/2.2.0.0/bin:/usr/local/moab-5.3.1/bin:/usr/local/moab-5.3.1/sbin:
/usr/local/c3-4:/usr/local/pbstools-1.4/bin:/users/user/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:
/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/usr/NX/bin:.:/usr/lib/mit/bin:
/usr/lib/mit/sbin:/usr/NX/bin:.)

"module rm <modulename>" removes the module from your environment. Hence you can see above that qstat is not known now as the Torque's PATH has been removed from your environment.

user@computenode:~> module list
Currently Loaded Modulefiles:

 1) modules/3.2.6   2) pbstools/1.4    3) c3/4            4) moab/5.3.1      5) gold/2200       6) torque/2.3.6
user@computenode:~> module purge
user@computenode:~> module list
No Modulefiles Currently Loaded.

Finally, "module purge" removes all the loaded modules from your environment.