Modules, also called Environment Modules, allows users to dynamically configure their shell environment without permanently altering their shell configuration scripts. This is especially useful on systems where users may need to access multiple versions of the same application. Users load and unload scripts called modulefiles to modify environment variables such as PATH or LD_LIBRARY_PATH. Modules is shell independent and supports all major Unix shells (Bash, ksh, Zsh, Fish, sh, tcsh, and csh), Windows shells (CMD.EXE and PowerShell) and several Scripting languages (Perl, Python, Ruby, Tcl, etc). Modules handles all kinds of items part of the shell environment, including environment variable, shell alias, shell function and command-line completion.