Sourcing Variables
A useful method for storing data, particularly configuration options, is to store a text file with entries that are actually variable definitions. This is easy to edit and very easy for a shell script to read. Often, users may not even realize how the file is used. One such example is the /etc/sysconfig directory in Red Hat-based Linux distributions. There is a common /etc/sysconfig/network file with the basic network configuration, which is read by a lot of system scripts. There is then a set of program-specific files, such as /etc/sysconfig/ntpd, which contains specific options for the Network Time Protocol daemon. Consider the start of /etc/init.d/ntpd, which is run when the system boots; it sources both of these files, and subsequently uses the values within them:
# Source function library. . /etc/init.d/functions # Source networking configuration. . /etc/sysconfig/network if [ -f /etc/sysconfig/ntpd ];then . /etc/sysconfig/ntpd fi
The configuration files themselves look like the following example. These files are easily edited by the systems administrator, or by software, and when required during system boot the variables contain all of the relevant options.
root@redhat# cat /etc/sysconfig/network NETWORKING_IPV6=no HOSTNAME=redhat.example.com NETWORKING=yes GATEWAY=192.168.32.1 root@redhat# cat /etc/sysconfig/ntpd # Drop root to id 'ntp:ntp' by default. OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid" # Set to 'yes' to sync hw clock after successful ...