Archivos de configuración de bash

Solapas principales

Solo hablaré de bash, aunque me refiera a ella como shell o consola, la configuración de otras shells puede ser similar o igual.

Ficheros inicialización de una sesión de login shell. p.e. ttys

/etc/profile

El primero en leerse automáticamente por bash cuando este es invocado en modo login (P.e. las ttys).
En este fichero se configuran muchas de las variables de bash (PATH, USER, MAIL, HOSTNAME ...) y otros valores como umask. Resumiendo,en él se incluyen variables generales del sistema.

Pero como este fichero es leido por muchas shells, no solo bash, es mejor poner las configuraciones de esta en otros archivos específicos.

~/.bash_profile
El segundo en orden en ser leído por bash. Normalmente poco se mete en este archivo, lo mas importante es que indica a bash que lea otros archivos como ~/.bash_login, ~/.profile, ~/.bash_logout

~/.bash_login
Normalmente el tercero en ser leído, si existe indica los comandos que correrán al momento de logearse, normalmente, son cosas como indicar la fecha, el nº de usuarios conectados ...

~/.profile
Equivalente a /etc/profile pero especifico de cada usuario, este archivo es leído por mas shells, aparte de bash. Puede ser leído por shells nologin si estas arrancan con la invocación a sh.

~/.bash_logout
Fichero con opciones para el momento del cierre de un login shell, lo mas habitual es que se incluya el comando clear y nada mas.

Ficheros inicialización para nologin shells

/etc/bash.bashrc
Bash lee y ejecuta las ordenes de este fichero. En el se incluyen variables generales del sistema, es como un /etc/profile pero que carga cada vez que arrancamos una shell en X o cualquier instancia de bash nologin, no es necesario reiniciar para que la shell acepte los cambios. Su uso no es habitual.
también es leído cuando se ejecuta bash a través de un demonio de consola remota (p.e. rshd)

/etc/bashrc

Puede cumplir las mismas funciones que /etc/profile. Si existe, se leerá a continuación de /etc/bash.bashrc, solo que este es leído únicamente por bash, excluyendo otras shells, por lo que si en nuestro sistema usamos varios tipos, podríamos dedicar este fichero para configurar bash.

~/.bashrc
Aquí es donde habitualmente se establece el prompt y los alias. Es un fichero para uso individual de cada usuario de consolas que no necesitan login, sin embargo es muy común que este archivo sea invocado desde ~/.profile por lo que también afectará a consolas login. Si queremos modificaciones individuales, este es el archivo a modificar, con preferencia a todos los anteriores.

Nota: entiendasé por nologin shell a toda shell a la cual se accede sin necesidad de ingresar usuario y contraseña como ser xterm, konsole, gnome-terminal o bien la ejecución de una nueva instancia del shell sobre una shell ya activa (p.e. ejecutar $ bash). Es también un caso de nologin shell el escalar/degradar privilegios mediante $ su.
En la practica podrá identificar un nologin shell sabiendo que no es posible salir de ellas mediante logout.

Otros archivos relacionados

Existen otros muchos archivos que se puede utilizar para configurar conductas de la shell Bash.
Pero son de raro uso. Como ejemplo:

~/.bash_aliases
Fichero al que añadir como su nombre indica, alias. No es en principio necesario, ya que .bashrc cumple esa función. Solo en casos muy raros puede interesar separar esos alias, de los que usamos habitualmente y "alimentar" bash con: source .bash_aliases.

~/.bash_history
Historial de comandos.

Referencias

man bash