Fundamentos de la Programación Shell en Unix: Tipos, Configuración y Flujo de Sesión

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 4,56 KB

Programación Shell en Unix: Tipos de Shell

El Shell de Presentación

Cuando se emite una orden en Unix, nos estamos relacionando con la parte más externa del Sistema Operativo (S.O.), que es el Shell.

  • El Shell lee las órdenes que introduce el usuario y realiza las acciones necesarias para su ejecución, pasándole la petición al núcleo (kernel).
  • Cuando un usuario inicia una sesión, se inicia automáticamente un programa de Shell. Este programa es el Shell de Presentación y está indicado en la entrada correspondiente al usuario en el fichero /etc/passwd. En este fichero existe una entrada por cada usuario del sistema, y el último campo de esa entrada indica el shell que se debe ejecutar al iniciar la sesión.

Archivos de Configuración del Shell de Presentación

Cuando se inicia el Shell de Presentación, busca el archivo .profile en el directorio de trabajo del usuario. El archivo .profile es un script (guion) Shell que se ejecuta automáticamente al conectarse; cada usuario tiene el suyo. Contiene instrucciones simples que necesitan para su ejecución el shell y otros programas. Se suelen inicializar variables de entorno, por ejemplo, PATH.

Se utilizan otros dos ficheros de configuración, que dependen del tipo de shell que estemos utilizando:

  • Bash Shell:
    • /etc/bashrc: Se utiliza si el Shell de Presentación es Bash y contiene órdenes específicas para dicho shell.
    • $HOME/.bashrc: Se ejecuta automáticamente al iniciar la sesión si el Shell de Presentación es Bash.
  • C Shell (csh):
    • Si utilizamos el C Shell, el fichero equivalente es $HOME/.cshrc.

Tipos de Shell en Unix

Unix soporta cuatro tipos principales de Shell:

  1. Shell Estándar o Shell de Bourne: sh.
  2. C Shell: csh.
  3. Korn Shell: ksh.
  4. Job Shell o Shell de Trabajo: jsh.

El C Shell (csh) y el Korn Shell (ksh) se desarrollaron para incorporar nuevas características y funcionalidades. Se introdujo la edición de la línea de comandos, el histórico de órdenes y los alias.

C Shell (csh)

El C Shell (csh) fue desarrollado por Bill Joy como parte del sistema Unix de Berkeley. Proporciona las características básicas del Shell Estándar y un amplio número de extensiones. El problema principal es que posee diferencias significativas con el Shell Estándar en cuanto a vocabulario y sintaxis. Los programas realizados con el Shell Estándar a menudo no funcionan con el C Shell.

Inicio de Sesión con C Shell (csh)

Cuando se inicia una sesión y el Shell de Presentación es csh, este busca los ficheros .cshrc y .login.

  • .login: Solo se ejecuta al iniciar la sesión y, por lo tanto, debe contener solo aquellas órdenes necesarias cuando el usuario inicia su sesión (por ejemplo, órdenes que establezcan los parámetros del terminal).
  • .cshrc: Se ejecuta cuando se inicia una sesión o cuando se realiza un escape de shell (cada vez que se ejecuta un script shell). Debe incluir la inicialización de variables que no son variables de entorno.

Korn Shell (ksh)

El Korn Shell (ksh) fue desarrollado por David Korn en los Laboratorios Bell. Incluye todas las funcionalidades del Shell Estándar y la mayoría de las ampliaciones incluidas en el C Shell. La principal ventaja es que es compatible con el Shell Estándar (sh); por lo tanto, cualquier programa realizado con el estándar se puede ejecutar con el Korn Shell.

Inicio de Sesión con Korn Shell (ksh)

Se utiliza el mismo fichero que el Shell Estándar, el .profile, que solo se ejecuta al inicio de sesión. Por lo tanto, cualquier cambio realizado sobre él no se verá reflejado hasta la siguiente sesión.

También existe otro fichero que se ejecuta al iniciar sesión, al realizar un escape de shell o al ejecutar un script shell. El nombre de este fichero se almacena en la variable de entorno ENV.

Entradas relacionadas: