Modules User Guide
Table of Contents
1. Introduction
Modules provides an easy mechanism for dynamically updating a user's environment, especially the $PATH, $MANPATH, $NLSPATH, and $LD_LIBRARY_PATH environment variables to name a few. Each module contains the information needed to configure the shell for an application or library. To perform this in the current shell, the modules package uses the shell's eval 'command' mechanism for running a program that outputs shell commands and then executes them. There are some limitations and preferred ways for setting up the modules environment because of this implementation. Modulefiles may be shared by many users on a system and users may have their own collection to supplement or replace the existing shared modulefiles.
2. Module Commands
Print the usage of each sub-command. If an argument is given, print the Module specific help information for the modulefile.
Load modulefile into the shell environment.
Remove modulefile from the shell environment.
Switch loaded modulefile1 with modulefile2.
The display sub-command will list the full path of the modulefile and all (or most) of the environment changes the modulefile will make if loaded.
List loaded modules.
List all available modulefiles in the current $MODULEPATH. All directories in the $MODULEPATH are recursively searched for files containing the modulefile magic cookie.
Prepend directory to the $MODULEPATH environment variable. The "--append" flag will append the directory to $MODULEPATH.
Remove directory from the $MODULEPATH environment variable.
Attempt to reload all loaded modulefiles. The environment will be reconfigured to match the saved ${HOME}/.modulesbeginenv and the modulefiles will be reloaded.
Force the Modules Package to believe that no modules are currently loaded.
Unload all loaded modulefiles.
3. Initializing Modules Software
The Modules environment should automatically set up in your environment when you log in. If for some reason it is not, you may do it manually by issuing the following command:
On Harold:
source /usr/cta/modules/3.1.6/init/shell
On Pershing:
source /usr/cta/modules/3.2.7/init/shell
Where shell=sh, csh, tcsh, ksh or bash, depending on which shell is your login shell. This command may also be put in your .cshrs.pers or .profile.pers files.
4. Types of Modules Available
When a user enters the "module avail" command a list of all the modules currently available to the user for loading are displayed. This list is broken down into four categories: COTS, Unsupported, Modules and Devel.
COTS modules initialize access to vendor codes installed and maintained by ARL DSRC staff. Most of these codes are available to all users. A few of these packages are ITAR controlled, and can only be accessed after requesting to be added the UNIX group under which the code was built. There are sample scripts in the Sample Code Repository ($SAMPLES_HOME) that provide examples of how to run most of these codes on the system.
Unsupported modules initialize access to codes that have been installed and are maintained by individual users who are not part of the ARL DSRC staff. These codes are installed in an area provided to the owner to allow access to them by more than the owner of the code. However, access is usually, but not always, group controlled.
The modules in the Modules area are the modules that are part of a user's default login environment and are automatically loaded as part of the login process.
Devel modules initialize access to program development tools such as compilers, parallel programming libraries and program development libraries. You can find samples and descriptions of how to use the various compilers and libraries in the Sample Code Repository ($SAMPLES_HOME).

