Explorando el archivo de configuración de BASH

De Bibliaubuntu

Cuando inicias el intérprete bash en tu Ubuntu, una de las primeras acciones que hace es leer varios ficheros de texto de tu sistema buscando informaciones sobre su configuración. Esos ficheros de configuración son, en el mismo orden en que los lee:

  • /etc/profile (sólo para los shell de ingreso)
  • /etc/bash.bashrc (para todos los shells bash)
  • ~/.bash_profile (sólo para los shell de ingreso)
  • ~/.bashrc (para todos los shells bash)


NOTA
El símbolo ~ (virgulilla) es una abreviatura del shell bash para indicar el directorio personal del usuario. ~/.bashrc se refiere al fichero .bashrc ubicado en mi directorio personal. ~malgia/.bashrc o ~filiprino/.bashrc son referencias al directorio personal de los usuarios malgia o filiprino, respectivamente.

Entre esos ficheros de inicialización del shell, los dos primeros se leen e incorporan cuando cualquier usuario ingresa en el sistema (/etc/profile) o inicia un shell bash (/etc/bash.bashrc). Los otros dos son ficheros de configuración individuales guardados en cada uno de los directorios personales de cada usuario. De la misma manera que los ficheros de configuración de sistema, el fichero ~/.bash_profile lo lee el shell durante el ingreso, mientras que el ~/bashrc lo lee cualquier otro shell que el usuario quiera crear después, tal como el xterm o el terminal de GNOME. De estos dos, el más importante es el .bashrc por dos razones:

  • En Ubuntu, el fichero ~/.bash_profile se lee incluso en el contexto de un shell de ingreso.
  • Inicial un shell bash es una operación mucho más frecuente que la de ingresar. Un usuario suele ingresar sólo una vez, mientras que iniciar un xterm o terminal de GNOME puede hacerlo muchísimas veces.

El fichero .bashrc permite a cada usuario personalizar varios aspectos de su shell bash, tales como dónde buscar los comandos, el formato utilizado para mostrar su prompt, el número de comandos que retiene en su historial, y muchas más cosas. También te permite crear tus propios comandos abreviados personalizados si te ves obligado a teclear cierto comando demasiadas veces para tu gusto o bien cierto comando con demasiadas opciones muy tediosas de repetir. Las líneas que empiecen con (#) en cualquier fichero de configuración de bash (o programa de shell, si se da el caso) se interpretarán como comentarios y no se ejecutarán.

CONSEJO
Todos los shells de Linux pueden interpretar un lenguaje de comandos, estructuras de bucles, y admitir expresiones condicionales que hacen fácil escribir muy diversos guiones de acciones para el intérprete (shell scripts). Explicar los misterios de la programación del shell queda fuera de esta introducción a Ubuntu Linux, pero puedes encontrar libros y páginas web excelentes sobre el tema. Dos buenos sitios web donde informarse son el Linux Shell Scripting Tutorial (en inglés) y la Iniciación de Novato a Novato del Proyecto LuCAS. También en su versión en inglés sita en The Linux Documentation Project

Cuando se crea una cuenta de usuario en un sistema Ubuntu, se crean con ella los ficheros .bashrc y .bash_profile. Esos dos ficheros se crean mediante la copia desde unos ficheros plantilla con los mismos nombres, y que están ubicados en el directorio /etc/skel. Lo que sigue es el principio del fichero .bashrc que utilizan todas las cuentas de usuario en Ubuntu:

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
[ -z "$PS1" ] && return
[nos ahorraremos el resto del fichero...]

La última línea de este ejemplo hace que se detenga la ejecución del propio fichero .bashrc si éste no se está ejecutando en modo interactivo. Esto se hace utilizando el comando [ (un corchete) para comprobar el valor de la variable de entorno PS1 (sabemos que es una variable de entorno porque tiene un símbolo dólar $ delante, el $ no forma parte del nombre de la variable). En la variable PS1 está definido el prompt del usuario, y sirve para retornar al shell padre si dicha variable está sin definir (si no está definida es que se está ejecutando un programa shell, porque en modo interactivo sí está definida).

¿Que qué es una variable de entorno? Está bien que lo preguntes.


NAVEGACIÓN
Apartado Anterior | Índice | Apartado Siguiente

Herramientas personales

sl
דומיין בעברית  דומיין  דומין  תוכנה לניהול  קשרי לקוחות  CRM, ניהול קשרי לקוחות  דומין בעברית  פורומים  ספרדית  גיבוי