Tracing Lmod

Lmod supports a tracing option to report the major steps that Lmod performs. It can be set by either setting the LMOD_TRACING to yes or using the -T or –trace option on the command line. This can be useful to understand what happens a shell startup. By setting LMOD_TRACING to yes for a particular user you can see something like the following for a user which as a default collection:

$ module -T restore
running: module -T restore
  Using collection:      /home/user/.lmod.d/default
  Setting MODULEPATH to :/opt/apps/modulefiles/Linux:/opt/apps/modulefiles/Core
  Loading: unix (fn: /opt/apps/modulefiles/Core/unix/unix.lua)
  Loading: gcc (fn: /opt/apps/modulefiles/Darwin/gcc/5.2.lua)
  Loading: noweb (fn: /opt/apps/modulefiles/Core/noweb/2.11b.lua)
  Loading: StdEnv (fn: /opt/apps/modulefiles/Core/StdEnv.lua)

Using Shell Startup Debug with Tracing

Sites may wish to install the shell startup debug package from sourceforce:

https://sourceforge.net/projects/shellstartupdebug

It tracks the startup actions during shell startup. It can tell you what files in /etc/profile.d/* are started. For example:

% cat > ~/.init.sh
export SHELL_STARTUP_DEBUG=1
^D
% zsh -l
/etc/zshenv{
  /etc/profile.d/lmod.sh{
  } Time = 0.1875
  /etc/profile.d/z00_lmod.sh{
  } Time = 0.2294
  /etc/profile.d/z99_StdEnv.sh{
  } Time = 0.2889
} Time = 0.2929

One of the tricks of this package is that it guarantees that a ~/.init.sh is read before any files in /etc/profile.d/*.sh are sourced for bash and zsh. The file ~/.init.csh is used for csh/tcsh. This means that you can also easily track Lmod startup actions:

% cat > ~/.init.sh
export LMOD_TRACING=yes
^D

% ssh localhost
...
running: module --initial_load --no_redirect restore
  Using collection:      /home/user/.lmod.d/default
  Setting MODULEPATH to: /opt/apps/modulefiles/Darwin:/opt/apps/modulefiles/Core
  Loading: unix (fn: /opt/apps/modulefiles/Core/unix/unix.lua)
  Loading: gcc (fn: /opt/apps/modulefiles/Darwin/gcc/5.2.lua)
  Loading: noweb (fn: /opt/apps/modulefiles/Core/noweb/2.11b.lua)
  Loading: StdEnv (fn: /opt/apps/modulefiles/Core/StdEnv.lua)

This way you can trace Lmod startup without having to edit any files in /etc/profile.d/* or the shell startup files.