Module vs. SoftEnv
SoftEnv, created by Remy Evard, is a tool for creating and managing a UNIX user's environment from a list of desired packages.Module, created by John Furlani, achieves pretty much the same thing.
Usually the packages in SoftEnv are named +name-version or @name-version, and in Module, name/version
Operation | Module command | SoftEnv command |
---|---|---|
Load a package into user's environment |
module add pkg | soft add pkg (to prepend to $PATH) soft append pkg (to append to $PATH) |
Remove a package from user's environment |
module rm pkg | soft delete pkg |
List all available packages | module avail | softenv |
List loaded packages in user's environment | module list echo $LOADEDMODULES |
|
Show the environment changes made by loading a package |
module display pkg | soft-dbq pkg |
Reset the user's environment | module purge | resoft |
To use SoftEnv in shell scripts
In Bourne shell (bash, sh), to add package +foo:eval `soft-dec -d sh add +foo`To remove package +foo:
eval `soft-dec -d sh delete +foo`For C shell (csh, tcsh), replace above sh by csh
To use Module in shell/Perl scripts
First, one needs to initialize the Module environment. In Bourne shell (bash, sh),. ${MODULESHOME}/init/shIn C shell (csh, tcsh),
source ${MODULESHOME}/init/cshThen one can use the commands like module add as usual in the shell scripts.
For Perl,
require "${MODULESHOME}/init/perl"; &module("load pkg1 pkg2");
Module is implemented as a user-defined function or an alias. For example, in Bourne shell, it is a user-defined function which uses eval to change environmental variables:
$ declare -f module module () { eval `/util/Modules/$MODULE_VERSION/bin/modulecmd bash $*` }It uses the environmental variable LOADEDMODULES to keep track of loaded modules.