Difference between revisions of "Setting up your environment"

From ScientificComputing
Jump to: navigation, search
(Created page with "<noinclude>==Introduction==</noinclude><includeonly>===Introduction===</includeonly> Most applications, compilers and libraries rely on '''environment variables''' to functio...")
 
Line 28: Line 28:
 
between different releases of the same application; or from one MPI library to
 
between different releases of the same application; or from one MPI library to
 
another can be done in a snap, using just one command &mdash; <tt>'''module'''</tt>.
 
another can be done in a snap, using just one command &mdash; <tt>'''module'''</tt>.
 +
 +
<noinclude>==Module commands==</noinclude><includeonly>===Module commands===</includeonly>
 +
 +
<noinclude>===Module avail===</noinclude><includeonly>====Module avail====</includeonly>
 +
<noinclude>===Module load===</noinclude><includeonly>====Module load====</includeonly>
 +
<noinclude>===Module list===</noinclude><includeonly>====Module list====</includeonly>
 +
<noinclude>===Module purge===</noinclude><includeonly>====Module purge====</includeonly>
 +
<noinclude>===Module show===</noinclude><includeonly>====Module show====</includeonly>
 +
 +
<noinclude>==Naming scheme==</noinclude><includeonly>===Naming scheme===</includeonly>

Revision as of 08:07, 18 August 2016

Introduction

Most applications, compilers and libraries rely on environment variables to function properly. These variables are usually set by the operating system, the administrator, or by the user. Typical examples include:

  • PATH — location of system commands and user programs
  • LD_LIBRARY_PATH — location of the dynamic (=shared) libraries needed by these commands and programs
  • MANPATH — location of man (=manual) pages for these commands
  • Program specific environment variables

The majority of problems encountered by users are caused by incorrect or missing environment variables. People often copy initialization scripts — .profile, .bashrc, .cshrc — from one machine to the next, without verifying that the variables defined in these scripts are correct (or even meaningful!) on the target system.

If setting environment variables is difficult, modifying them at run-time is even more complex and error-prone. Changing the contents of PATH to use a different compiler than the one set by default, for example, is not for the casual user. The situation can quickly become a nightmare when one has to deal with multiple compilers and libraries (e.g. MPI) at the same time.

Environment modules — modules in short — offer an elegant and user-friendly solution to all these problems. Modules allow a user to load all the settings needed by a particular application on demand, and to unload them when they are no longer needed. Switching from one compiler to the other; or between different releases of the same application; or from one MPI library to another can be done in a snap, using just one command — module.

Module commands

Module avail

Module load

Module list

Module purge

Module show

Naming scheme