Files
modules/doc/source/envml.rst
Xavier Delaruelle e1ccc34cfc doc: clarify envml man page
Signed-off-by: Xavier Delaruelle <xavier.delaruelle@cea.fr>
2025-06-13 18:58:23 +02:00

103 lines
2.4 KiB
ReStructuredText

.. _envml(1):
envml
=====
SYNOPSIS
--------
**envml** [*MODULE_ACTION*]... [--] *COMMAND* [*ARG*]...
DESCRIPTION
-----------
The :command:`envml` command configures the environment using specified
Environment Modules actions and then given command.
This is useful for running a command in a modified environment without
permanently altering the current shell session.
:command:`envml` interprets its first arguments as module actions, then
switches to command execution after either encountering ``--`` or determining
that the remaining arguments form the actual command to run.
MODULE_ACTION FORMAT
--------------------
Each module action argument can be one of the following forms:
- ``purge``
Unload all currently loaded modulefiles.
- ``restore[=coll]``
Restore the module environment from the named collection ``coll``. If no
name is given, restores the default collection.
- ``unload=mod1[&mod2...]``
Unload one or more specified modulefiles.
- ``switch=mod1&mod2``
Unload ``mod1`` and load ``mod2``.
- ``[load=]mod1[&mod2...]``
Load one or more specified modulefiles. ``load=`` can be omitted.
Multiple MODULE_ACTIONs can be passed in a single argument using the colon
(``:``) separator. The ampersand (``&``) is used to specify multiple modules
in a single action.
COMMAND EXECUTION
-----------------
Everything following the ``--`` separator is treated as the command to execute
in the modified environment.
If no ``--`` separator is provided, :command:`envml` assumes the first
argument is a MODULE_ACTION and the remaining arguments form the command to
execute.
OPTIONS
-------
.. option:: --help, -h
Display usage information and exit.
EXAMPLES
--------
Restore default module collection then run ``command arg1 arg2``:
.. code-block:: sh
envml restore command arg1 arg2
Purge all modules, then load ``mod1`` and ``mod2``, and run the command:
.. code-block:: sh
envml purge:mod1:mod2 command arg1 arg2
Use the ``--`` separator to avoid ambiguity:
.. code-block:: sh
envml restore load=mod1&mod2 -- command arg1 arg2
EXIT STATUS
-----------
The :command:`envml` command returns the exit status of the executed command
or ``1`` if module action fails.
DIAGNOSTICS
-----------
If the :command:`module` command is not available in the shell (i.e., not a
shell function), :command:`envml` will print an error and exit.
SEE ALSO
--------
:ref:`module(1)`, :ref:`ml(1)`, :ref:`modulefile(5)`