---
name: "ml"
section: "1"
platform: "linux"
package: "environment-modules"
version: "5.7.0-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ml"
---

# ml(1)

handy command interface to the Modules package

## NAME

ml - handy command interface to the Modules package

## SYNOPSIS

**ml** \[*switches*\] \[*sub-command* \[*sub-command-args*\]\]

**ml** \[*switches*\] \[\[-\]*modulefile*...\]

## DESCRIPTION

**ml** is a user interface to the Modules package. The Modules package provides for the dynamic modification of the user's environment via *modulefiles*.

**ml** acts as a shortcut command to the **module** command thus it supports all the command line switches and module sub-commands that are supported by **module**.

**ml** also provides handy shortcuts to list currently loaded modulefiles, when no argument is provided to **ml**; to load modulefiles, when modulefile names are passed right after **ml** command name; to unload modulefiles, when modulefile names prefixed by a minus sign (**-**) are passed right after **ml** command name.

Multiple modulefiles to load and to unload can be specified on a single **ml** command line. In this situation unloads are treated first in specified order, then loads are processed also in specified order (see EXAMPLES section below).

If an error occurs among either modulefile loads or unloads, command line processing is stopped and every unloads and loads performed are rolled back. Conversely, if **ml** is removed from **abort\_on\_error** \<#mconfig-abort\_on\_error\> configuration option list or if **--force** \<#cmdoption-force\> option is set, unload and load sequence continues: already achieved module evaluations are kept and unload then load sequence is resumed with the remaining modulefiles.

**ml** command line is parsed first to match every known command line switches or module sub-commands. So to load a modulefile via the **ml** shortcut syntax, modulefile name should not equal a module sub-command name. Moreover to unload a modulefile via the **ml** shortcut syntax, modulefile name should not equal a command line switch short name.

See the DESCRIPTION \<#module-description\> section in module \<#module-1\> for the list of supported command line switches and module sub-commands.

## EXAMPLES

Loading modulefile **foo** then look at currently loaded modulefiles:

```
$ ml foo
$ ml
Currently Loaded Modulefiles:
 1) foo
```

Unloading modulefile **foo** then list modulefiles still loaded:

```
$ ml -foo
$ ml
No Modulefiles Currently Loaded.
```

Mixing load and unload of modulefiles in a single command. All specified unloads are processed first then loads are performed:

```
$ ml -v -foo bar -baz qux
Unloading foo
Unloading baz
Loading bar
Loading qux
```

## EXIT STATUS

The **ml** command exits with **0** if its execution succeed. Elsewhere **1** is returned.

## ENVIRONMENT

See the ENVIRONMENT \<#module-environment\> section in module \<#module-1\> for the list of supported environment variables.

## SEE ALSO

envml \<#envml-1\>, module \<#module-1\>, modulecmd \<#modulecmd-1\>, modulefile \<#modulefile-5\>

## Copyright

1996-2026, Modules Contributors
