Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
services:modules [2019/07/25 13:03]
giunta [Usage]
services:modules [2019/07/25 14:34] (current)
giunta [Tips for graphical login]
Line 32: Line 32:
  
 A user may wish to go back to an initial set of modules: A user may wish to go back to an initial set of modules:
- 
-  $ module reset 
- 
-This will unload all currently loaded modules, including the sticky ones, then load the list of modules specified by LMOD_SYSTEM_DEFAULT_MODULES. There is a related command: 
  
   $ module restore   $ module restore
  
-This command will also unload all currently loaded modules, including the sticky ones, and then load the system default unless ​the user has a default collection. See User Collections for more details.+This command will also unload all currently loaded modules, including the sticky ones, and then load the user'​s ​default collection. See [[services:​modules#​user_collections|User Collections]] for more details.
  
 If a module is not available then an error message is produced: If a module is not available then an error message is produced:
Line 77: Line 73:
 This will search any help message or whatis description for the word(s) given on the command line. This will search any help message or whatis description for the word(s) given on the command line.
  
-Another way to search for modules is with the ''​module spider''​command. This command searches the entire list of possible modules. The difference between ''​module avail''​ and ''​module spider''​ is explained in the [[services:​modules#​module_hierarchy|Module Hierarchy]] and [[services:​modules#​searching_for_modules|Searching for Modules]] section.:+Another way to search for modules is with the ''​module spider''​command. This command searches the entire list of possible modules. The difference between ''​module avail''​ and ''​module spider''​ is explained in the [[services:​modules#​module_hierarchy|Module Hierarchy]] and [[services:​modules#​searching_for_modules|Searching for Modules]] section:
  
   $ module spider   $ module spider
Line 178: Line 174:
 ===== Controlling Modules During Login ===== ===== Controlling Modules During Login =====
  
-Normally when user logs in, there are a standard set of modules that are automatically loaded. Users can override and add to this standard set in two ways. The first is adding module commands to their personal startup files. The second way is through the “module save” command.+<note warning>​Automatically loaded modules may have negative effect on GNOME graphical login</​note>​
  
-To add module commands to users’ startup scripts ​requires a few steps. ​Bash users can put the module commands in either their ~/.profile file or their ~/.bashrc file. It is simplest ​to place the following in their ~/.profile ​file:+Users can automatically load a standard set of modules when log in, adding module commands to their //personal startup files//​. ​To add module commands to users’ startup scriptsBash users need to place the following in their ''​~/.bashrc'' ​file:
  
-if [ -f ~/​.bashrc ​]; then +<​code>​ 
-     ​~/.bashrc+if [ -z "​$BASHRC_READ" ​]; then 
 +   export BASHRC_READ=1 
 +   # Place any module commands here 
 +   ​# module load git
 fi fi
-and place the following in their ~/.bashrc file:+</code>
  
 +By wrapping the module command in an //if// test, the module commands need only be read in once. Any sub-shell will inherit the ''​PATH''​ and other environment variables automatically. ​
 +
 +Csh users need specify the module commands in their ''​~/​.cshrc''​ file:
 +
 +<​code>​
 +if ( ! $?​CSHRC_READ ) then
 +   ​setenv CSHRC_READ 1
 +   # Place any module command here
 +   # module load git
 +endif
 +</​code>​
 +
 +If users have created at least a default collection (see [[services:​modules#​user_collections|User Collections]] for more details), they can replace all ''​module load ...''​ commands with a single ''​module restore''​. Bash users need to place the following in their ''​~/​.bashrc''​ file:
 +
 +<​code>​
 if [ -z "​$BASHRC_READ"​ ]; then if [ -z "​$BASHRC_READ"​ ]; then
 +   ​export BASHRC_READ=1
 +   ​module --initial_load --no_redirect restore
 +else
 +   ​module refresh
 +fi
 +</​code>​
 +
 +Csh users need specify the ''​module restore''​ command in their ''​~/​.cshrc''​ file:
 +
 +<​code>​
 +if ( ! $?​CSHRC_READ ) then
 +   ​setenv CSHRC_READ 1
 +  module --initial_load restore
 +else
 +  module refresh
 +endif
 +</​code>​
 +
 +==== Tips for graphical login ====
 +
 +When using automatically loaded modules, a possible solution to avoid problems on GNOME login could be testing ''​TERM''​ environment variable. In this way, only when users open a graphical terminal (e.g., GNOME Terminal), modules will be loaded. On SISSA linux workstations,​ //GNOME Terminal// sets it as ''​xterm-256color''​. Bash users may add a test on ''​TERM''​ variable in their ''​~/​.bashrc'':​
 +
 +<​code>​
 +if [ "​$TERM"​ == "​xterm-256color"​ -a -z "​$BASHRC_READ"​ ]; then
    ​export BASHRC_READ=1    ​export BASHRC_READ=1
    # Place any module commands here    # Place any module commands here
    # module load git    # module load git
 fi fi
-By wrapping the module command in an if test, the module commands need only be read in once. Any sub-shell will inherit the PATH and other environment variables automatically. On login shells the ~/.profile file is read which, in the above setup, causes the ~/.bashrc file to be read. On interactive non-login shells, the ~/.bashrc file is read instead. Obviously, having this setup means that module commands need only be added in one file and not two.+</code>
  
-Csh users need only specify the module commands ​in their ~/.cshrc file as that file is always sourced:+Csh users need to add in their ''​~/.cshrc'' ​file:
  
-if ( ! $?​CSHRC_READ ) then+<​code>​ 
 +if ( "​$TERM"​ == "​xterm-256color"​ && ​! $?​CSHRC_READ ) then
    ​setenv CSHRC_READ 1    ​setenv CSHRC_READ 1
    # Place any module command here    # Place any module command here
    # module load git    # module load git
 endif endif
 +</​code>​
  
 ===== User Collections ===== ===== User Collections =====