Siguiente Anterior Contenido


11. Bash

Si le das a login una combinación válida de usuario y contraseña, mirará en /etc/passwd qué shell ofrecerte. En la mayoría de los casos en un sistema Linux será bash. La tarea de bash es leer tus órdenes y hacer que se ejecuten. Es a la vez un interfaz de usuario y un intérprete de lenguaje de programación.

Como interfaz de usuario lee tus comandos y los ejecuta si son comandos "internos" como cd, o busca y ejecuta un programa si son comandos "externos" como cp o startx. También hace cosas chéveres como mantener una historia de comandos y completar nombres de archivos.

Ya hemos vista a bash en acción como intérprete de lenguaje de programación. Los guiones que ejecuta init paar arrancar el sistema son normalmente scripts del shell, y los ejecuta bash. Tener un verdadero lenguaje de programación junto a las utilidades habituales del sistema disponibles en la línea de comandos constituye una combinación muy poderosa, si sabes lo que estás haciendo. Por ejemplo (engreimiento activado) el otro día necesitaba aplicar un montón de "parches" a un directorio de código fuente. Fui capaz de hacerlo simplemente con el siguiente comando:

for f in /home/greg/sh-utils-1.16*.patch; do patch -p0 < $f; done;

Esto mira todos los archivos de mi directorio raíz cuyos nombres comienzan con sh-utils-1.16 y terminan con .patch. Entonces los toma de uno en uno, apunta la variable f a él y ejecuta los comandos entre do y done. En este caso eran 11 archivos patch, pero igualmente podrían haber sido 3000.

11.1 Configuración

El archivo /etc/profile controla el comportamiento de bash en todo el sistema. Lo que pongas ahí afectará a todos los que usen bash en tu sistema. Hará cosas como añadir directorios al PATH o ajustar tu variable de directorio MAIL.

El comportamiento por omisión del teclado muchas veces deja mucho que desear. En realidad es readline quien maneja eso. Readline es un paquete separado que maneja interfaces de línea de comando, proporcionando la historia de comandos y el completamiento de los nombres de archivo, así como algunas características avanzadas de edición de líneas. Está compilado dentro de bash. Por omisión, readline se configura usando el archivo .inputrc de tu directorio raíz. La variable del bash INPUTRC se puede usar para sustituir esto para el bash. Poer ejemplo, en Red Hat 6, INPUTRC está ajustada a /etc/inputrc en /etc/profile. Esto significa que las teclas de retroceso, Supr (Del), Inicio (Home) y Fin (End) funcionan bien para todo el mundo.

Una vez que bash ha leído el archivo de configuración para todo el sistema, busca tu archivo de configuración personal. Mira en tu dierctorio personal buscando .bash_profile, .bash_login y .profile. Ejecuta el primero de estos que encuentra. Si quieres cambiar la foma en la que se comporta contigo, sin cambiar el modo como se comporta con otros, hazlo aquí. Por ejemplo, muchas aplicaciones usan variables de entorno para controlar cómo trabajan. Yo tengo la variable EDITOR ajustada a vi de modo que puedo usar  vi en Midnight Commander (un excelente gestor de archivos basado en consola) en lugar de su editor.

11.2 Ejercicios

Los rudimentos de bash son fáciles de aprender. Pero no te pares ahí: es increíblemente profundo. Acostúmbrate a buscar mejores formas de hacer las cosas.

Lee guiones de shell, busca cosas que no entiendas.

11.3 Más Información


Siguiente Anterior Contenido