Special Files

Both shells read one or more start-up files. Some of the files are read only when a shell is a login shell.

The Korn shell reads these files:

  1. /etc/profile. Executed automatically at login, first.

  2. ~/.profile. Executed automatically at login, second.

  3. $ENV. Specifies the name of a file to read when a new Korn shell is created. (ksh88: all shells. ksh93: interactive shells only.) The value is variable (ksh93: and command and arithmetic) substituted in order to determine the actual file name. Login shells read $ENV after processing the files /etc/profile and $HOME/.profile.

Bash reads these files:

  1. /etc/profile. Executed automatically at login, first.

  2. The first file found from this list: ~/.bash_profile, ~/.bash_login, or ~/.profile. Executed automatically at login, second.

  3. ~/.bashrc is read by every shell, after the login files. However, if invoked as sh, Bash instead reads $ENV, just as the Korn shell does.

For both shells, the getpwnam() and getpwuid() functions are the sources of home directories for ~ name abbreviations. (On single-user systems, the user database is stored in /etc/passwd. However on networked systems, this information may come from NIS, NIS+, or LDAP, not your workstation password file.)

Get Unix in a Nutshell, 4th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.