Los ficheros de inicio de Bash

El intérprete de comandos /bin/bash (de aquí en adelante nos referiremos a él como "el intérprete") usa una colección de ficheros de inicio para ayudar a crear un entorno en el que ejecutarse. Cada fichero tiene un uso específico y puede afectar de manera diferente a entornos interactivos y de conexión.

Un intérprete interactivo de conexión se ejecuta después de una entrada al sistema correcta, mediante /bin/login, leyendo el fichero /etc/passwd. Un intérprete interactivo de no conexión se ejecuta mediante la línea de comandos (por ejemplo, [prompt]$/bin/bash). Un intérprete no interactivo está presente normalmente cuando se ejecuta un guión. Es no interactivo porque está procesando un guión y no está esperando a que el usuario introduzca un comando.

Para más información, consulta info bash -- Nodos: Bash Startup Files e Interactive Shells (Ficheros de inicio de Bash e Intérpretes Interactivos)

Se necesitan los siguientes ficheros para asegurarse que se lee el entorno correcto para cada una de las formas en que el intérprete puede ser invocado: /etc/profile, /etc/bashrc, ~/.bash_profile y ~/.bashrc. El fichero ~/.bash_logout no se usa para la invocación del intérprete. Es leído por este cuando un usuario sale del sistema. Los ficheros /etc/profile y ~/.bash_profile son leídos cuando se ejecuta un intérprete interactivo de conexión. El fichero ~/.bashrc es leído cuando se ejecuta un intérprete interactivo de no conexion.

Aquí se muestra un fichero /etc/profile básico. Los comentarios en el fichero deberían explicar todo lo que necesitas. Para más información de las secuencias de escape que puedes usar para el indicador del sistema (p.e la variable de entorno PS1) consulta info bash -- Nodo: Printing a Prompt.

# Inicio de /etc/profile
# Escrito para Más Allá de Linux From Scratch
# por James Robertson <jameswrobertson@earthlink.net>

# Variables de entorno del sistema y programas de inicio.

# Alias del sistema y funciones deberían estar en /etc/bashrc. Variables
# de entorno personales y programas de inicio deberían estar en
# ~/.bash_profile. Alias personales y funciones deberían estar en
# ~/.bashrc.

# Función para ayudarnos a manejar rutas
pathman () {
	if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
		if [ "$2" = "last" ] ; then
			PATH=$PATH:$1
		else
			PATH=$1:$PATH
		fi
	fi
}

# Añade a la ruta estándar.
if [ $(id -u) = 0 ] ; then
	if [ -d "/usr/local/sbin" ] ; then
		pathman /usr/local/sbin last
	fi
fi

if [ $(id -u) != 0 ] ; then
	if [ -d "/usr/local/bin" ] ; then
		pathman /usr/local/bin last
	fi
fi

if [ -d "/usr/X11R6/bin" ] ; then
	pathman /usr/X11R6/bin last
fi

# Define algunas variables de entorno.
HISTSIZE=1000
PS1="[\u@\h \w]\\$ "

# Define la variable de entorno INPUTRC.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
	INPUTRC=/etc/inputrc
fi

# Configuración de /bin/ls para soportar colores. Los alias están en /etc/bashrc.
if [ -f "/etc/dircolors" ] ; then
	eval $(dircolors -b /etc/dircolors)

	if [ -f "$HOME/.dircolors" ] ; then
		eval $(dircolors -b $HOME/.dircolors)
	fi
fi

export PATH HISTSIZE PS1 LS_COLORS INPUTRC

# Fin de /etc/profile

Aquí se muestra un fichero /etc/bashrc básico. Los comentarios en el fichero deberían explicar todo lo que necesitas.

# Inicio de /etc/bashrc 
# Escrito para Más Allá de Linux From Scratch 
# por James Robertson <jameswrobertson@earthlink.net>

# Alias del sistema y funciones.

# Variables de entorno del sistema y programas de inicio deberían estar en
# /etc/profile. Variables de entorno personales y programas de inicio deberían
# estar en ~/.bash_profile. Alias personales y funciones deberían estar en
# ~/.bashrc.

# Queremos configurar umask por defecto
# Incluso para intérpretes no interactivos y de no conexión.
if [ "$(id -gn)" = "$(id -un)" -a $(id -u) -gt 99 ] ; then
	umask 002
else
	umask 022
fi

# Proporciona un comando /bin/ls con colores. Usado junto con el código
# que está en /etc/profile.
alias ls='ls --color=auto'

# Fin de /etc/bashrc

Aquí se muestra un fichero ~/.bash_profile básico. Los comentarios en el fichero deberían explicar todo lo que necesitas.

# Inicio de ~/.bash_profile
# Escrito para Más Allá de Linux From Scratch 
# por James Robertson <jameswrobertson@earthlink.net>

# Variables de entorno personales y programas de inicio

# Alias personales y funciones deberían estar en ~/.bashrc. Variables de
# entorno del sistema y programas de inicio deberían estar en /etc/profile.
# Alias del sistema y funciones están en /etc/bashrc.

if [ -f "$HOME/.bashrc" ] ; then
	source $HOME/.bashrc
fi

if [ -d "$HOME/bin" ] ; then
	pathman $HOME/bin last
fi

export PATH 

# Fin de ~/.bash_profile

Aquí se muestra un fichero ~/.bashrc básico. Los comentarios en el fichero deberían explicar todo lo que necesitas.

# Inicio de ~/.bashrc
# Escrito para Más Allá de Linux From Scratch 
# por James Robertson <jameswrobertson@earthlink.net>

# Alias personales y funciones

# Variables de entorno personales y programas de inicio deberían estar en
# ~/.bash_profile.  Variables de entorno del sistema y programas de inicio
# están en /etc/profile.  Alias del sistema y funciones están en 
# /etc/bashrc. 

if [ -f "/etc/bashrc" ] ; then
	source /etc/bashrc
fi

# Fin de ~/.bashrc

Aquí se muestra un fichero ~/.bash_logout básico. Los comentarios en el fichero deberían explicar todo lo que necesitas. Comprobarás que el fichero ~/.bash_logout no incluye un comando clear. Esto es porque el borrado de la pantalla se indica en el fichero /etc/issue.

# Inicio de ~/.bash_logout
# Escrito para Más Allá de Linux From Scratch 
# por James Robertson <jameswrobertson@earthlink.net>

# Cosas que hacer cuando se salga del sistema.

# Fin de ~/.bash_logout

Si quieres usar los ficheros /etc/dircolors o ~/.dircolors llamándolos desde /etc/profile, entonces ejecuta lo siguiente: /bin/dircolors -p > /etc/dircolors o /bin/dircolors -p > ~/.dircolors respectívamente. El fichero en el directorio /etc debería ser usado para configuraciones globales y si existe uno en tu directorio home entonces este sobreescribirá las configuraciones globales. Sería una buena idea crear un fichero .dircolors básico y situarlo en el directorio /etc/skel para los nuevos usuarios.

Ian Macdonald ha escrito una excelente colección de consejos y trucos para mejorar el entorno del intérprete de comandos. Puedes consultarla en http://www.caliban.org/bash/index.shtml