Currently the ERC is focused on Docker and implementations must construct the execution command themselves, most importantly to support substitution.
Alternatively, the ERC could support bash commands (similar to a Travis config file) or Makefile - based execution. In case for this, the following draft of control commands can be extended:
Implementations SHOULD support a list of [bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) commands as control statements.
These commands are given as a list under the node `cmd` under the root-level node `execution`.
Non-bash commands MUST be defined under own nodes under the `execution` node.
The current/working directory for these commands MUST be the [ERC base directory](#base-directory).
The execution commands MAY ensure the re-computation is independent from the environment.
For example, the time zone could be fixed via an environment variable `TZ=CET`, so output formatting of timestamps does not break [checking](../glossary.md#check).
This is in addition to ERC creators handling reproducibility at a script level.
!!! tip "Examples for control statements"
```yml
execution:
cmd:
- `./prepare.sh --input my_data`
- `./execute.sh --output results --iterations 3`
Currently the ERC is focused on Docker and implementations must construct the execution command themselves, most importantly to support substitution.
Alternatively, the ERC could support
bash
commands (similar to a Travis config file) orMakefile
- based execution. In case for this, the following draft of control commands can be extended: