3.4. Intérpretes de órdenes (Shells)

En FreeBSD, gran parte del trabajo diario se realiza a través de un interfaz de la linea de órdenes llamado "shell". El principal trabajo del shell es recoger órdenes del canal de entrada y ejecutarlas. Muchos shells tienen también integradas funciones para ayudarnos en las tareas cotidianas tales como la manipulación de archivos, edición de líneas de órdenes, macros de órdenes, expansión de expresiones regulares en nombres de archivo y variables del sistema. FreeBSD viene con un conjunto de shells, como sh, el shell Bourne y csh, el shell C. Hay disponibles muchos otros shells en la "FreeBSD Ports Collection" que son mucho más potentes, como bash y tcsh.

¿Qué shell usar? Es cuestión de gustos. Si se es programador de C se puede sentir más cómodo con tcsh, un shell con una sintaxis similar al C. Si se proviene del mundo Linux o se es nuevo en el interfaz de órdenes de Unix, se puede probar con bash. El asunto es que cada shell posee unas propiedades únicas que pueden o no funcionar con el entorno de trabajo preferido y se ha de efectuar una elección sobre el shell a usar.

Una de las propiedades comunes de un shell es que completa los nombres de archivo. Dada la introducción de las primeras letras de una orden o del nombre de un archivo, se puede hacer que el shell complete automáticamente el resto de la orden o el nombre del archivo pulsando la tecla TAB. Aquí va un ejemplo. Supongamos que se tienen dos archivos llamados foobar y foo.bar. Se quiere borrar foo.bar. Lo que habría que teclear es: rm fo[TAB].[TAB].

El shell nos mostraría rm foo[BEEP].bar.

El [BEEP] es el pitido de consola (console bell): es el shell diciéndonos que fue incapaz de completar totalmente el nombre de archivo porque hay más de una coincidencia. Tanto foobar como foo.bar comienzan por fo, pero solo se pudo completar hasta foo. Si se teclea ., y de nuevo TAB, el shell será capaz de introducir el resto del nombre por nosotros.

Otra función del shell son las variables de entorno. Las variables de entorno son parejas de valores clave almacenados en el espacio de entorno del shell. Este espacio puede ser leído por cualquier programa invocado por el shell y, por tanto, en él se encuentra bastante información relativa a la configuración de programas. Lo siguiente es una lista de las variables de entorno más comunes y su significado:

Variable Descripción
USER Nombre de usuario con el que se ha entrado al sistema.
PATH Lista de directorios, separada por puntos y coma, en los que se busca ejecutables.
DISPLAY Nombre en la red de la pantalla de X11 a la que conectarse, si se encuentra disponible.
SHELL El shell actual.
TERM El nombre del terminal del usuario. Se usa para determinar las posibilidades del terminal de datos.
TERMCAP Base de datos donde encontrar los códigos de escape necesarios para realizar diferentes funciones en el terminal.
OSTYPE Tipo de sistema operativo. Por ejemplo, FreeBSD.
MACHTYPE Arquitectura de la CPU en la que el sistema se está ejecutando.
EDITOR El editor de texto preferido por el usuario.
PAGER El paginador de texto preferido por el usuario.
MANPATH Lista de directorios en los que se busca páginas de manual, separados por puntos y coma.

Visualizar o establecer una variable de entorno difiere ligeramente de shell a shell. Por ejemplo, en los shells al estilo C como tcsh y csh, se usaría setenv para establecer y visualizar las variables de entorno actuales. Siguiendo el ejemplo, para establecer o modificar el valor de EDITOR, bajo csh o tcsh una orden como la siguiente establecería el valor de EDITOR a /usr/local/bin/emacs:

% setenv EDITOR /usr/local/bin/emacs

Bajo los shells tipo Bourne (Bourne Shells):

% export EDITOR="/usr/local/bin/emacs"

También se puede hacer que la mayoría de los shells muestren el contenido de una variable de entorno situando el carácter $ delante del nombre de la variable desde la línea de órdenes. Por ejemplo, echo $TERM mostrará cualquiera que sea el valor que se le haya establecido a TERM, porque el shell expande el valor de TERM y se lo pasa al programa echo.

Los shells manejan muchos caracteres especiales, llamados meta-caracteres, como representaciones especiales de datos. El mas común es el carácter *, que representa cualquier número de caracteres en un nombre de archivo. Estos meta-caracteres especiales se pueden usar para la expansión de nombres de archivos. Por ejemplo, teclear echo * es casi lo mismo que introducir ls porque el shell recoge todos los archivos que coinciden con * y se los pone en la línea de órdenes a echo para que los vea.

Para evitar que el shell interprete estos caracteres especiales, se pueden salvar poniendo el carácter contrabarra (\) delante de ellos. echo $TERM muestra cualquiera que sea el valor establecido para el terminal que estamos usando. echo \$TERM muestra $TERM tal cual.

3.4.1. Cambiando de shell

La manera más fácil de cambiar de shell es usando la orden chsh. Al ejecutar chsh se nos situará dentro del editor de texto que figure en la variable de entorno EDITOR o, de no estar configurada, se nos abrirá vi. Cámbiese la línea “Shell:” adecuadamente.

También se le puede suministrar a chsh la opción -s; ésto establecerá el shell por nosotros sin necesidad de entrar en el editor de texto. Por ejemplo, si se desea cambiar el shell a bash, lo siguiente realizará el ajuste:

% chsh -s /usr/local/bin/bash

Ejecutar chsh sin parámetros y cambiar el shell desde allí tambien funcionaría.

Nota: El shell que se desee usar debe figurar en el archivo /etc/shells. Si se ha instalado un shell desde la colección de ports, entonces esto ya se habrá realizado. Si se ha instalado manualmente el shell, se debe realizar el cambio pertinente.

Por ejemplo, si se instaló manualmente bash y se situó en /usr/local/bin, debería hacer:

# echo "/usr/local/bin/bash" >> /etc/shells


Y entonces volver a ejecutar chsh.

Éste y otros documentos pueden obtenerse en ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para preguntas acerca de FreeBSD, leer la documentación antes de contactar con la lista <questions@FreeBSD.org>.
Para preguntas acerca de esta documentación, e-mail a <doc@FreeBSD.org>.

Hosting by: hurra.com
Generated: 2007-01-26 18:00:31