The Modules package is a tool that simplify shell initialization and\nlets users easily modify their environment during the session with\nmodulefiles.
\nEach modulefile contains the information needed to configure the shell for\nan application. Once the Modules package is initialized, the environment can\nbe modified on a per-module basis using the module command which interprets\nmodulefiles. Typically modulefiles instruct the module command to alter or\nset shell environment variables such as PATH, MANPATH, etc. modulefiles may\nbe shared by many users on a system and users may have their own collection\nto supplement or replace the shared modulefiles.
\nModules can be loaded and unloaded dynamically and atomically, in an clean\nfashion. All popular shells are supported, including bash, ksh, zsh, sh,\ncsh, tcsh, fish, cmd, as well as some scripting languages such as tcl, perl,\npython, ruby, cmake and r.
\nModules are useful in managing different versions of applications. Modules\ncan also be bundled into meta-modules that will load an entire suite of\ndifferent applications.
\n\nHere is an example of loading a module on a Linux machine under bash.
\n$ module load gcc/9.4.0\n$ which gcc\n$ /usr/local/gcc/9.4.0/linux-x86_64/bin/gcc\n
Now we'll switch to a different version of the module
\n$ module switch gcc gcc/10\n$ which gcc\n/usr/local/gcc/10.3.0/linux-x86_64/bin/gcc\n
And now we'll unload the module altogether
\n$ module unload gcc\n$ which gcc\ngcc not found\n
Now we'll log into a different machine, using a different shell (tcsh).
\n% module load gcc/10.3\n% which gcc\n/usr/local/gcc/10.3.0/linux-aarch64/bin/gcc\n
Note that the command line is exactly the same, but the path has\nautomatically configured to the correct architecture.
\n\nThe simplest way to build and install Modules on a Unix system is:
\n$ ./configure\n$ make\n$ make install\n
To learn the details on how to install modules see INSTALL.txt
for Unix\nsystem or INSTALL-win.txt
for Windows.
- \n
- Tcl >= 8.5 \n
Modules is distributed under the GNU General Public License, either version 2\nor (at your option) any later version (GPL v2+). Read the file COPYING.GPLv2
\nfor details.
See MIGRATING
to get an overlook of the new functionalities introduced\nby each released versions. NEWS
provides the full list of changes added\nin each version. The Changes
document gives an in-depth view of the\nmodified behaviors and new features between major versions. You may also look\nat the ChangeLog
for the technical development details.
The doc
directory contains both the paper and man pages describing the\nuser's and the module writer's usage. To generate the documentation files,\nlike the man pages (you need Sphinx >= 1.0 to build the documentation), just\ntype:
$ ./configure\n$ make -C doc all\n
The following man pages are provided:
\nmodule(1), ml(1), modulefile(5)\n
Regression testing scripts are available in the testsuite
directory (you\nneed DejaGnu to run the test suite):
$ ./configure\n$ make test\n
Once modules is installed after running make install
, you have the\nability to test this installation with:
$ make testinstall\n
Web site:
\n\n\n\n
Online documentation:
\n\n\n\n
GitHub source repository:
\n\n\n\n
GitHub Issue tracking system:
\n\n\n\n
SourceForge project page:
\n\n\n\n\n
Please note that Modules has a Code of conduct. By participating in the\nModules community, you agree to abide by its rules.
\n\nCurrent core developer and maintainer is:
\n- \n
- Xavier Delaruelle <xavier.delaruelle AT cea.fr> \n
The following people have notably contributed to Modules and Modules would\nnot be what it is without their contributions:
\n- \n
- R.K. Owen \n
- Kent Mein \n
- Mark Lakata \n
- Harlan Stenn \n
- Leo Butler \n
- Robert Minsk \n
- Jens Hamisch \n
- Peter W. Osel \n
- John L. Furlani \n