1config(5) Files config(5)
2
3
4
6 config - Configuration file.
7
9 A configuration file contains values for configuration parameters for
10 the applications in the system. The erl command-line argument -config
11 Name tells the system to use data in the system configuration file
12 Name.config.
13
14 The erl command-line argument -configfd works the same way as the -con‐
15 fig option but specifies a file descriptor to read configuration data
16 from instead of a file.
17
18 The configuration data from configuration files and file descriptors
19 are read in the same order as they are given on the command line. For
20 example, erl -config a -configfd 3 -config b -configfd 4 would cause
21 the system to read configuration data in the following order a.config,
22 file descriptor 3, b.config, and file descriptor 4. If a configuration
23 parameter is specified more than once in the given files and file de‐
24 scriptors, the last one overrides the previous ones.
25
26 Configuration parameter values in a configuration file or file descrip‐
27 tor override the values in the application resource files (see app(4)).
28 The values in the configuration file are always overridden by command-
29 line flags (see erts:erl(1)).
30
31 The value of a configuration parameter is retrieved by calling applica‐
32 tion:get_env/1,2.
33
35 The configuration file is to be called Name.config, where Name is any
36 name.
37
38 File .config contains a single Erlang term and has the following syn‐
39 tax:
40
41 [{Application1, [{Par11, Val11}, ...]},
42 ...
43 {ApplicationN, [{ParN1, ValN1}, ...]}].
44
45 Application = atom():
46 Application name.
47
48 Par = atom():
49 Name of a configuration parameter.
50
51 Val = term():
52 Value of a configuration parameter.
53
55 When starting Erlang in embedded mode, it is assumed that exactly one
56 system configuration file is used, named sys.config. This file is to be
57 located in $ROOT/releases/Vsn, where $ROOT is the Erlang/OTP root in‐
58 stallation directory and Vsn is the release version.
59
60 Release handling relies on this assumption. When installing a new re‐
61 lease version, the new sys.config is read and used to update the appli‐
62 cation's configurations.
63
64 This means that specifying another .config file, or more .config files,
65 leads to an inconsistent update of application configurations. There
66 is, however, a way to point out other config files from a sys.config.
67 How to do this is described in the next section.
68
70 There is a way to include other configuration files from a sys.config
71 file and from a configuration that comes from a file descriptor that
72 has been pointed out with the -configfd command-line argument.
73
74 The syntax for including files can be described by the Erlang type lan‐
75 guage like this:
76
77 [{Application, [{Par, Val}]} | IncludeFile].
78
79 IncludeFile = string():
80 Name of a .config file. The extension .config can be omitted. It is
81 recommended to use absolute paths. If a relative path is used in a
82 sys.config, IncludeFile is searched, first, relative to the
83 sys.config directory, then relative to the current working direc‐
84 tory of the emulator. If a relative path is used in a -configfd
85 configuration, IncludeFile is searched, first, relative to the dic‐
86 tionary containing the boot script (see also the -boot command-line
87 argument) for the emulator, then relative to the current working
88 directory of the emulator. This makes it possible to use sys.config
89 for pointing out other .config files in a release or in a node
90 started manually using -config or -configfd with the same result
91 whatever the current working directory is.
92
93 When traversing the contents of a sys.config or a -configfd configura‐
94 tion and a filename is encountered, its contents are read and merged
95 with the result so far. When an application configuration tuple {Appli‐
96 cation, Env} is found, it is merged with the result so far. Merging
97 means that new parameters are added and existing parameter values are
98 overwritten.
99
100 Example:
101
102 sys.config:
103
104 ["/home/user/myconfig1"
105 {myapp,[{par1,val1},{par2,val2}]},
106 "/home/user/myconfig2"].
107
108 myconfig1.config:
109
110 [{myapp,[{par0,val0},{par1,val0},{par2,val0}]}].
111
112 myconfig2.config:
113
114 [{myapp,[{par2,val3},{par3,val4}]}].
115
116 This yields the following environment for myapp:
117
118 [{par0,val0},{par1,val1},{par2,val3},{par3,val4}]
119
120 The run-time system will abort before staring up if an include file
121 specified in sys.config or a -configfd configuration does not exist, or
122 is erroneous. However, installing a new release version will not fail
123 if there is an error while loading an include file, but an error mes‐
124 sage is returned and the erroneous file is ignored.
125
127 app(4), erts:erl(1), OTP Design Principles
128
129
130
131Ericsson AB kernel 8.5.3 config(5)