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.
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.
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.