The system configuration used at
startup is contained in files within
the directory
/etc/rc.config.d.
The file
/etc/rc.config
sources all of the files within
/etc/rc.config.d
and
/etc/TIMEZONE
and exports their contents to the environment.
/etc/rc.config
The file
/etc/rc.config
is a script
that sources all of the
/etc/rc.config.d/*
scripts, and also sources
/etc/TIMEZONE.
To read the configuration definitions,
only this file need be sourced.
This file is sourced by
/sbin/rc
whenever it is run, such as when the
init
command is run to transition between run states.
Each file that exists in
/etc/rc.config.d
is sourced,
without regard to which startup
scripts are to be executed.
/etc/rc.config.d
The configuration information is structured
as a directory of files,
rather than as a single file containing
the same information.
This allows developers
to create and manage their own configuration
files here,
without the complications of shared ownership and access
of a common file.
/etc/rc.config.d/* Files
This is where files containing configuration variable
assignments are located.
Configuration scripts must be written to be
read by the POSIX shell,
and not the Bourne shell,
ksh,
or
csh.
In some cases, these files must also be read
and possibly modified by
sd
control scripts or the
sam
program.
See
sd(4)
and
sam(1M).
For this reason,
each variable definition must appear on a separate line,
with the syntax:
No trailing comments may appear on a variable definition line.
Comment statements must be on separate lines,
with the
#
comment character in column one.
This example shows the required syntax for configuration files:
# Cron configuration. See cron(1M)
# Cron configuration. See cron(1M)
#
# CRON: Set to 1 to start cron daemon
#
CRON=1
Configuration variables may be
declared as array parameters when
describing multiple instances of the variable configuration.
For example, a system may contain two network interfaces,
each having a unique IP address and subnet mask
(see
ifconfig(1M)).
An example of such a declaration is as follows:
NET_CARDS=2
IP_ADDRESS[1]=15.1.55.2
SUBNET_MASK[1]=255.255.248.0
IP_ADDRESS[2]=15.1.55.3
SUBNET_MASK[2]=255.255.248.0
Note that there must be no requirements
on the order of the files sourced.
This means configuration files must
not refer to variables defined in other
configuration files,
since there is no guarantee that the variable being
referenced is currently defined.
There is no protection against environment
variable namespace collision in these configuration files.
Programmers must take care to avoid such problems.