# config

### FILE

config

### FILE SUMMARY

Configuration file.

### DESCRIPTION

A configuration file contains values for configuration parameters for the applications in the system. The `erl` command line argument `-config Name` tells the system to use data in the system configuration file `Name.config`.

Configuration parameter values in the configuration file will override the values in the application resource files (see `app(4)`). The values in the configuration file can be overridden by command line flags (see `erl(1)`).

The value of a configuration parameter is retrieved by calling `application:get_env/1,2`.

### FILE SYNTAX

The configuration file should be called `Name.config` where `Name` is an arbitrary name.

The `.config` file contains one single Erlang term. The file has the following syntax:

    [{Application1, [{Par11, Val11}, ..]},
     ..
     {ApplicationN, [{ParN1, ValN1}, ..]}].

- `Application = atom()` is the name of the application.
- `Par = atom()` is the name of a configuration parameter.
- `Val = term()` is the value of a configuration parameter.

### sys.config

When starting Erlang in embedded mode, it is assumed that exactly one system configuration file is used, named `sys.config`. This file should be located in `$ROOT/releases/Vsn`, where `$ROOT` is the Erlang/OTP root installation directory and `Vsn` is the release version.

Release handling relies on this assumption. When installing a new release version, the new `sys.config` is read and used to update the application configurations.

This means that specifying another, or additional, `.config` files would lead to inconsistent update of application configurations. Therefore, in Erlang 5.4/OTP R10B, the syntax of `sys.config` was extended to allow pointing out other `.config` files:

    [{Application, [{Par, Val}]} | File].

- `File = string()` is the name of another `.config` file. The extension `.config` may be omitted. It is recommended to use absolute paths. A relative path is relative the current working directory of the emulator.

When traversing the contents of `sys.config` and a filename is encountered, its contents are read and merged with the result so far. When an application configuration tuple `{Application, Env}` is found, it is merged with the result so far. Merging means that new parameters are added and existing parameter values overwritten. Example:

    sys.config:

    [{myapp,[{par1,val1},{par2,val2}]},
     "/home/user/myconfig"].

    myconfig.config:

    [{myapp,[{par2,val3},{par3,val4}]}].

This will yield the following environment for `myapp`:

    [{par1,val1},{par2,val3},{par3,val4}]

The behaviour if a file specified in `sys.config` does not exist or is erroneous in some other way, is backwards compatible. Starting the runtime system will fail. Installing a new release version will not fail, but an error message is given and the erroneous file is ignored.

### SEE ALSO

`app(4)`, `erl(1)`, OTP Design Principles

### AUTHORS

Martin Björklund - support@erlang.ericsson.se
Gunilla Arendt - support@erlang.ericsson.se

kernel 2.11
Copyright © 1991-2006 Ericsson AB