The operating system in its standard format provides various settings chosen by the distributor and by the projects responsible for the individual shells themselves. These can then be customized by the systems administrator by editing configuration files in the /etc directory. The main configuration file, which all Bourne-compatible shells honor, is /etc/profile. This provides some basic, sane settings for interactive shells; it typically sets the command prompt to $ or # depending on whether or not it is running as root; sets the umask; and sets PATH, TERM, and other useful variables. It may also do other useful things such as display the /etc/motd (Message of the Day) file, notify the user if she has new mail messages, and even display a “fortune cookie” message to amuse the user as she logs in. It can also call other scripts, often to be found in the /etc/profile.d/ directory. These can be used to customize specific features, applications, and tools in a way that allows the package manager to add or remove those tweaks along with the application, without having to edit the /etc/profile script itself.
All of these configuration files are sourced and not simply executed. This means that any variables or functions defined by these files are inherited by the running shell.
Because individual users will want to customize their own shells in their own way, each user gets ...