5. Configuración de una sesión

Indicadores de Logros

5.1. Lectura: Configuración de una sesión

En Linux puede iniciar una sesión desde una consola virtual o desde X-Window. Lo que ocurre en cada caso es diferente, y para lograr configurar la sesión, es muy útil saber algunos de los eventos que ocurren, así como los archivos de configuración que se emplean y su formato --para editarlos de ser necesario.

5.1.1. Una sesión con bash

Si pasa a una consola virtual (ver Lectura Sistema de usuarios y manejo de clave) o inicia una sesión de telnet, verá un mensaje que presenta el sistema mientras espera que un usuario ingrese, algo como:

Debian Linux 2.2 oxigeno tty1
oxigeno login:

Este mensaje es generado por el programa getty. Después de que usted ingresa su login, se inicia el programa login el cual pide su clave y después si la clave es correcta inicializa algunas variables de ambiente (e.g. HOME y SHELL), muestra algunos mensajes (en particular muestra el mensaje del día ---archivo /etc/motd) e inicia una sesión de login interactiva con bash, o con el intérprete de comandos que haya configurado el usuario (puede configurarse con el programa chsh). Usted puede desactivar los mensajes presentado por login creando un archivo vacío ~/.hushlogin.

Al iniciar bash, ejecutará el script /etc/profile y después intentará ejecutar uno de los archivos ~/.bash_profile, ~/.bash_login o ~/.profile (en ese orden y sólo se ejecutará el primero que encuentre). El script ~/.bash_profile también puede contener una llamada al script ~/.bashrc el cual es el script que bash lee cuando se usa en modo interactivo pero no como intérprete de login [47], por ejemplo con:

if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

Sugerimos que configure su archivo ~/.bash_profile para ejecutar ~/.bashrc y que configure variables de ambiente y alias en ~/.bashrc. Por otra parte, cuando cierra una sesión interactiva con bash se ejecuta el script ~/.bash_logout.

Dado que bash emplea la librería readline (ver Ayudas interactivas de bash), puede configurarse la interacción. readline lee la información de configuración del archivo /etc/inputrc y después de ~/.inputrc o del archivo indicado por la variable de ambiente INPUTRC. En este archivo de configuración pueden asociarse acciones con secuencias de teclas o pueden configurarse varios detalles de readline, por ejemplo para emplear teclas de vi y completar con la tecla TAB debe incluir las siguientes líneas:

set editing-mode vi
TAB: complete

o para asegurar que bash permita ingresar y presente caracteres propios de español (tildes, eñe, diéresis), puede agregar a este archivo las siguientes líneas (y eventualmente configurar la variable LANG en ~/.bash_profile como se explica más adelante):

set input-meta on set output-meta on set convert-meta off

Por defecto la historia de comandos se almacena en el archivo especificado por la variable HISTFILE (normalmente ~/.bash_history) y la máxima cantidad de comandos por almacenar se especifica en HISTSIZE.

Ciertos aspectos que afectan a bash y otros programas pueden ser configurados por medio de variables de ambiente. Aunque algunas ya se presentaron brevemente (ver Ambiente y variables de ambiente), a continuación se presentan detalles de otras:

LANG LANGUAGE

Estas variables junto con LANGUAGE, LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES y LC_ALL indican el idioma por usar a bash y a otros programas que soportan diversos idiomas [48] ---la configuración de estas variables puede ser examinada con el programa locale. El soporte para diversos idiomas incluye el idioma en el que los programas presentan mensajes al usuario, el tipo de letra (porque varios lenguajes tienen su propio juego de caracteres), el orden en el que se presentan las fechas, el formato de números decimales, el formato de cantidades monetarias y otros detalles. Para activar un lenguaje particular basta poner las variables LANG y LANGUAGE en el código del lenguaje o locale que se desea usar. En el caso de español el código es es o si desea localización aún más particular de Colombia puede usar es_CO ---el código para otros lenguajes sigue el estándar ISO 639 y generalmente corresponde a las dos primeras letras del idioma cuando se escribe en el mismo idioma. Las otras variables (LC_*) permiten afinar detalles de la localización con códigos diferentes a los de LANG y LANGUAGE: LC_CTYPE se refiere al tipo y clasificación de caracteres, LC_COLLATE a secuencias de varios caracteres que deben interpretarse como uno sólo (por ejemplo en español "ch" y "ll"), LC_TIME al formato en el que se presentan fecha y hora, LC_NUMERIC al formato de números, LC_MONETARY al formato de cantidades monetarias, LC_MESSAGE al idioma de los mensajes.

Si después de configurar estas variables en el valor es_CO no puede ver caracteres con tildes, por ejemplo desde vi o si los programas no presentan mensajes en español (pruebe por ejemplo entrando a dselect), intente con el valor es_AR o recuerdele al administrador configurar el locale para Colombia (ver Localización y configuración de algunos programas).

TERM

En esta variable se mantiene el tipo de terminal [49] que el usuario está empleando, las variables LINES y COLUMS mantienen el número de líneas y columnas de la terminal. El valor especificado en TERM es empleado por el intérprete de comandos para enviar secuencias de control [50] apropiadas para la pantalla y para interpretar la información proveniente del teclado. Por ejemplo si usted se conecta a un sistema Unix desde una terminal Wyse 60 debe poner en TERM el valor wyse60. Al conectarse desde otro PC con Linux o Windows puede emplear el valor ansi o en su defecto vt100, al abrir bash desde una ventana de X-Window se debe emplear el valor xterm. Puede consultar la lista de nombres que puede poner en la variable TERM en el directorio /usr/share/terminfo, esa ruta es la ubicación de la base de datos terminfo, la cual mantiene las secuencias de control para todas las terminales soportadas por su sistema ---más de 800. Desde bash puede emplear el programa clear para borrar pantalla y puede consultar la base terminfo con el programa tput, por ejemplo para cambiar el tipo de letra a negrillas use

echo `tput bold`

Para configurar algunos parámetros de comunicación con su terminal emplee stty y para consultar el dispositivo con el cual el kernel identifica su terminal emplee tty.

PS1 PS2

Estas variables contienen prompts que bash presenta al usuario cuando está esperando información. PS1 es el prompt principal, que bash presenta cuando espera comandos, PS2 es presentado cuando bash espera más información para completar un comando ---por ejemplo si usa cat <<EOF (ver bash y el juego de herramientas).

Estas variables pueden tener mensajes, secuencias de control para su terminal (por ejemplo para borrar pantalla o ubicar el cursor) y algunas secuencias de caracteres que se interpretan de forma especial. El siguiente prompt borrará pantalla antes de presentarse [51], mostrará el mensaje hola seguido del nombre del usuario, la palabra en y el nombre de la máquina:

PS1="`tput clear`hola \u en \h: "

Las secuencias que se interpretan de forma especial son:

\a

Produce un sonido

\d

Fecha

\e

Caracter que representa inicio de una secuencia de control para su terminal (ASCII 33).

\h

Nombre de la máquina hasta el primer '.'

\H

Nombre completo de la máquina.

\n \r

Nueva línea.

\s \v \V

Nombre y versión del intérprete de comandos.

\t \T \@

Hora en diversos formatos.

\u

Nombre del usuario.

\w \W

Directorio de trabajo.

\$

El caracter '#' si el usuario es el administrador y '$' en otro caso.

5.1.2. Una sesión con X-Window

Una sesión con un administrador de escritorio como Gnome requiere una compleja infraestructura para funcionar. Gnome es un administrador de escritorio que maneja los menús y algunos programas como el manejador de archivos (otros administradores de escritorio son KDE y XFCE). Estos administradores de escritorio requieren un administrador de ventanas, el administrador de ventanas ubica las ventanas y maneja las barras de título y controles de cada ventana (Tab Window Manager, XFWM, Sawfish y Enlightment son ejemplos de administradores de ventanas). Los diversos elementos gráficos (como textos, botones, menús, etc) son presentados empleando una librería de widgets (en el caso de Gnome se usa GTK, otros ejemplo son Athena y Qt). Estas librerías emplean X-Window, que se encarga finalmente de comunicarse con el hardware para mostrar imágenes ---X-Window también envía datos por la red en caso de que inicien aplicaciones gráficas en máquinas remotas (ver telnet y ssh).

Aunque es posible iniciar el servidor X con startx, normalmente el administrador del sistema configurará un administrador de vistas [52] que se ejecutará automáticamente duratne el arranque. El administrador de vistas iniciará X-Window y le permitirá ingresar su login y su clave con un programa gráfico. En el caso de GNOME, el administrador de vistas es gdm (que usa el progama gdmlogin para pedir al usuario su login y clave).

gdmlogin le permite configurar el administrador de escritorio que desea usar y el idioma en el que desea iniciar su sesión (es decir fijará la variable de ambiente LANG). Los eventos que ocurran después de que teclee su login y clave dependen del administrador de escritorio que escoja.

Si escoge una sesión sin administrador de escritorio (XSession), su archivo ~/.xsession será ejecutado o si no existe, se ejecutará un script por defecto que iniciara un manejador de ventanas sencillo como twm y una terminal X.

A continuación se presenta un archivo ~/.xsession típico:

#!/bin/sh

if (test -f $HOME/.Xresources;) then {
  xrdb -merge $HOME/.Xresources;
} fi
if (test -f $HOME/.Xmodmap;) then {
  xmodmap $HOME/.Xmodmap;
} fi
xmessage -file /etc/motd &
xterm -title zzz -g 70x35+1+1 &
xclock -g +500+0 &
xcalc -g -0+298 &

twm

Note que este archivo es un script para el intérprete de comandos ---debe darle permiso de ejecución para que funcione correctamente---, el cual inicializa variables de ambiente, ejecuta diversos programas en el fondo (una ventana con un mensaje, una terminal X, un reloj y una calculadora) y que el último programa ejecutado (twm) no se ejecuta en el fondo. De hecho el último programa es un manejador de ventanas (Tab Window Manager), y no debe ejecutarse en el fondo porque la sesión X se cerrará cuando se cierre este. Los programas xrdb y xmodmap, que se explicarán a continuación, no son interactivos y terminan su ejecución rapidamente, por eso no requieren ser ejecutados en el fondo.

Algunas propiedades de aplicaciones X-Window como color, tipo de letra [53] y geometría (i.e ubicación y tamaño de la ventana) se denominan recursos, usted puede ajustarlos y puede hacer sus cambios durables creando un archivo de recursos. Para manejar recursos se emplea el programa xrdb que en particular permite mezclar los recursos del servidor X que está corriendo con los de un archivo. El archivo usual en el que se especifican recursos para aplicaciones X es ~/.Xresources.

Para iniciar una aplicación X con recursos diferentes a los que tiene por defecto o a los configurados en ~/.Xresources puede emplear opciones en la línea de comando, por ejemplo para iniciar xterm con un tipo de letra diferente se emplea la opción -fn seguida del nombre del tipo de letra:

xterm -fn "-adobe-avant garde gothic-book-r-normal--14-120-75-*-p-80-iso8859-1"

El nombre del tipo de letra puede escogerlo con ayuda del programa fontsel. Para cambiar la geometría de una ventana (tamaño y ubicación) puede emplear la opción -geometry o -g como se uso con los programas del archivo ~/.xsession de ejemplo (puede examinarse la geometría de una ventana ya abierta con el programa xwininfo). Para cambiar los colores puede emplear las opciones -fn y -bg para especificar colores de la letra y del fondo respectivamente; a continuación de estas debe especificarse el nombre del color, el cual puede ser escogido con ayuda del programa xcolors; por ejemplo:

xterm -geometry 100x30 -fg yellow -bg red

En un archivo de recursos como ~/.Xresources pueden especificarse las propiedades de los ejemplos con las siguientes líneas:

xterm*Foreground: yellow
xterm*Background: red
xterm*VT100.geometry: 100x30
xterm*font: -adobe-avant garde gothic-book-r-normal--14-120-75-*-p-80-iso8859-1

Puede aprender más sobre recursos mientras explora los de las aplicaciones abiertas con el programa editres.

La configuración del teclado puede alterarse, por ejemplo para intercambiar dos teclas o para activar teclas muertas en un teclado sin tildes [54], empleando el programa xmodmap. Por ejemplo para configurar el apóstrofe como tecla muerta para la tilde en un teclado us:

xmodmap -e "keycode 48=dead_acute"

La configuración del teclado puede mantenerse en el archivo ~/.Xmodmap que normalmente es leído cada vez que inicia una sesión gráfica. Por ejemplo para configurar teclas muertas para la virgulilla como ~, la tilde como ', la dieresis como " y la tecla múltiple [55] como Alt Izquierdo en un teclado us:

keycode 64=Alt_L Multi_key
keycode 48=dead_acute dead_diaeresis
keycode 49=dead_grave dead_tilde

Los códigos de cada tecla pueden examinarse con el programa xev. El mapa del teclado que está configurado en X-Window puede consultarse con la opción -pk de xmodmap, las teclas modificadoras (con significado especial) pueden consultarse con la opción -pm, los nombres de las teclas en el archivo /usr/include/X11/keysymdef.h.

X-Window empleará tipos de letra por defecto que puede listar con los frogramas xfontsel y xlsfonts, si requiere otras fuentes que no están disponibles en su servidor X, debe darla a conocer al servidor X antes de usarla:

cp nuevafuente.pcf ~/misfuentes
mkfontdir ~/misfuentes
xset fp rehash

5.1.3. Una sesión con Gnome

La mayoría de características de Gnome pueden ser configuradas desde el centro de control Gnome (ver Lectura Escritorio y herramientas Gnome), sin embargo como Gnome emplea X-Window algunas características deben configurarse de forma diferente, por ejemplo la configuración del teclado y los recursos de algunas aplicaciones X-Window los puede configurar como se explicó en la sección anterior (archivos ~/.Xmodmap y ~/.Xresources). La configuración del administrador de ventanas normalmente la podrá hacer desde el centro de control Gnome.

Gnome permite resumir una sesión en el estado que quedó la última vez que la cerró (característica llamada administración de sesiones). Puede mantener varias sesiones de este tipo e iniciarlas escogiendo la que desee desde gdmlogin. Para guardar una sesión con un nombre nuevo emplee el centro de control Gnome (menú Sesiones) o edite el archivo ~/.gnome/sessions.

La administración de sesiones funciona bien con aplicaciones diseñadas para Gnome, pero no siempre para otras. Si debe ejecutar alguna aplicación o comandos al inicio de cada sesión Gnome y no logra configurarlas con la administración de sesiones, agréguelos al archivo ~/.gnomerc o emplee el centro de control Gnome (menú Sesiones) para especificar la aplicación por iniciar.

La configuración de varias aplicaciones Gnome la encuentra en el directorio ~/.gnome. Los menús que Gnome presenta pueden ser configurados sólo por el administrador, excepto el menú "Favoritos" que puede ser editado por cada usuario. Para editarlo emplee el botón derecho sobre el pánel, elija el menú pánel y después edición de menús.

5.2. Lecturas recomendadas: Configuración de una sesión

  • Puede ver otra explicación sobre la configuración de bash en G.L.U.P. - Guía de Linux Para el Usuario. Sección 9.1 Personalización del bash. http://lucas.hispalinux.es/Manuales-LuCAS/GLUP/glup_0.6-1.1-html-1.1/guide09.htm

  • bash puede configurarse aún más con los comandos set y shopt. Puede consultar más sobre ambos en la página del manual de bash.

  • La base de datos terminfo es común a todos los sistemas libres tipo Unix (e.g FreeBSD, OpenBSD, Linux). Dicha base e información sobre la misma pueden obtenerse en http://www.tuxedo.org/~esr/terminfo/ Puede consultar más sobre terminales y terminfo en las páginas del manual de terminfo, tput y stty.

  • Puede aprender más sobre localización e internacionalización en el manual info de gettext (Verr (info gettext).) ---gettext es la librería usada por Linux para manejar mensajes en varios idiomas. En Internet puede consultar el sitio del proyecto de internacionalización de Linux http://www.li18nux.org o el proyecto de localización a español de Debian http://www.debian.org/international/spanish/proyectos.es.html.

  • Para aprender más sobre la configuración y operación de X-Window, puede consultar algunas páginas del manual (e.g xmodmap, editres), en especial recomendamos man X.

  • Para aprender más sobre los recursos de X-Window (y sobre X-Window) puede revisar la sección "The X Resources" de "X Window User HOWTO". Disponible en su sistema en /usr/doc/HOWTO/en-txt/XWindow-User-HOWTO.txt.gz o en Internet http://www.linuxdoc.org/HOWTO/XWindow-User-HOWTO-8.html.

  • Para aprender más sobre el gestor de sesiones de Gnome puede consultar la sección "Gestor de Sesiones" de la Guía de usuario GNOME, disponible en su sistema en file:/usr/share/gnome/help/users-guide/C/gccsession.html o en Internet en http://www.croftj.net/~barreiro/spanish/gnome-es/users-guide/session.html

5.3. Ejercicios: Configuración de una sesión

5.3.1.

Edite su archivo ~/.bash_profile y agregue líneas para que ejecute el archivo ~/.bashrc en caso de que exista. Después ejecute un intérprete de comandos de ingreso para comprobar que el cambio funciona.

5.3.2.

En su archivo ~/.bashrc agregue la vía /opt/bin a la variable de ambiente PATH y después agregue y exporte la variable LD_LIBRARY_PATH con el valor /opt/lib ---ambos son cambios requeridos por nuestra plataforma de referencia (ver Plataforma de referencia) y le permitirán ejecutar algunos programas que estén en el servidor.

5.3.3.

Edite el archivo de configuración de readline y agregue una línea con:

"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"

después reinicie su sesión de bash y presione Control-x p. ¿Qué acción asoció con esa secuencia de teclas? Ayuda: para entender la notación y las teclas vea la sección sobre emacs (ver Editores de texto)

5.3.4.

Momentáneamente configure una sesión de bash para que presente mensajes en otros idiomas (por ejemplo en inglés cuyo código es en). Pruebe después su cambio examinando los mensajes de algún programa o una página del/manual.

5.3.5.

Modifique el prompt de bash para que cada vez que se presente emita un sonido y muestre el nombre del usuario y la hora.

5.3.6.

Configure GNOME para que al iniciar su sesión abra el calendario de Gnome (gnomecal) y el programa emacs (Ayuda: gnomecal es una aplicación Gnome mientras que emacs no).

5.3.7.

Configure emacs para que comience con colores diferentes. Ayuda: debe modificar los recursos, puede usar editres para ver algunos o consultar la sección "X Resources" del manual de Emacs.



[47] Cuando abre una terminal desde X-Window con un intérprete de comandos se dice que el intérprete es interactivo pero no de login. Dado que un intérprete de login se ejecuta máximo una vez cuando usted inicia una sesión mientras que uno interactivo puede ejecutarse muchas (una por cada terminal que abra), los archivos de configuración de cada uno son diferentes.

[48] Un término para denotar soporte de diversos idiomas es NLS, que es sigla de Native language support. No todos los programas de su sistema emplearán esta característica y algunos aunque la emplean aún no tienen soporte para español ---esa es otra oportunidad para ayudar. Si está interesado en colaborar en agregar soporte para español a Debian o traducir mensajes, páginas del manual o documentos, puede unirse al proyecto de traducción http://www.debian.org/international/spanish/proyectos.es.html

[49] En este contexto terminal se refiere al tipo de teclado y pantalla que está empleando.

[50] Secuencias de control se refiere a "instrucciones" para la terminal que indican operaciones como borrar pantalla, ubicar el cursor en una posición específica, cambiar colores, etc.

[51] El ejemplo usa sustitución de comandos (ver Scripts básicos para bash) para sustituir el comando tput clear por el valor que retorna, es decir por la secuencia que su terminal emplea para borrar pantalla.

[52] Administrador de vistas: del inglés display manager.

[53] Tipo de letra: del inglés font

[54] Teclas muertas son teclas que permiten ingresar caracteres propios del español en teclados que no tienen teclas para estos caracteres, por ejemplo cuando el apóstrofe se configura como tecla muerta para el acento, al presionar ' y después a se produce á; para producir el apóstrofe su presionaría el apóstrofe y después la barra espaciadora

[55] La tecla múltiple o compose cambia el comportamiento por defecto de algunas teclas para generar caracteres de diversos alfabetos.