Manual de FreeBSD
Anterior | Capítulo 3. Conceptos básicos de Unix | Siguiente

# 3.9. Shells

En FreeBSD gran parte del trabajo diario se hace en una interfaz de línea de órdenes llamada shell. El trabajo principal de la shell es ir recibiendo órdenes mediante un canal de entrada y ejecutarlos. Muchas shells también tienen funciones integradas para ayudar ayudar con las tareas diarias como manipulación de ficheros, gestión de archivos con expresiones regulares, edición en la propia línea de órdenes, macros de órdenes y variables de entorno. FreeBSD incluye diversas shells, como `sh`, el shell Bourne y `tcsh`, el shell C mejorado. Hay muchas otras shells disponibles en la colección de ports de FreeBSD, como `zsh` y `bash`.

¿Qué shell usar? es una cuestión de gustos. Si va a programar en C puede preferir usar una shell tipo C, como `tcsh`. Si viene del mundo Linux o si es nuevo en la interfaz de línea de órdenes de UNIX® puede probar con `bash`. Tenga en cuenta que cada shell posee unas propiedades únicas que pueden o no funcionar con su entorno de trabajo preferido y que puede usted elegir qué shell usar.

Una de las propiedades comunes de las shell es que completan los nombres de fichero. Una vez que ha introducido las primeras letras de una orden o del nombre de un fichero, se puede hacer que la shell complete automáticamente el resto de la orden o nombre de fichero pulsando la tecla Tab. Veamos un ejemplo. Suponga que tiene dos ficheros llamados `talcual` y `tal.cual`. Usted quiere borrar `tal.cual`. Lo que habría que teclear es: `rm ta[tabulador].[tabulador]`.

La shell mostraría en pantalla `rm ta[BIP].cual`.

El [BIP] es la campana de la consola, es decir, la shell está diciéndome que no pudo completar totalmente el nombre de fichero porque hay más de una coincidencia. Tanto `talcual` como `tal.cual` comienzan por `ta`, pero solo se pudo completar hasta `tal`. Si se teclea `.`, y de nuevo tabulador la shell es capaz de añadir el resto del nombre de fichero.

Otra función de la 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 la shell y por lo tanto contiene mucha configuración de programas. Esta es una lista de las variables de entorno más comunes y su significado:

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

Establecer una variable de entorno difiere ligeramente de shell a shell. Por ejemplo, en las shells al estilo C como `tcsh` y `csh`, se usa `setenv` para establecer las variables de entorno. Bajo shells Bourne como `sh` y `bash`, se usa `export` para establecer las variables de entorno actuales. Por ejemplo, para establecer o modificar la variable de entorno `EDITOR` (bajo `csh` o `tcsh`) la siguiente orden establece `EDITOR` como `/usr/local/bin/emacs`:

    % setenv EDITOR /usr/local/bin/emacs

Bajo shells Bourne:

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

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

Las shells manejan muchos caracteres especiales, llamados metacaracteres, como representaciones especiales de datos. El más común es el caracter `*`, que representa cualquier número de caracteres en un nombre de fichero. Estos metacaracteres especiales se pueden usar para la expansión de nombres de fichero. Por ejemplo, teclear `echo *` es casi lo mismo que introducir `ls` porque la shell toma todos los ficheros que coinciden con `*` y se los pone en la línea de órdenes para que `echo` los vea.

Para evitar que la shell interprete estos caracteres especiales pueden escamotearse anteponiéndoles una contrabarra (`\`). `echo $TERM` imprime el nombre de terminal que esté usando. `echo \$TERM` imprime `$TERM`, literalmente.

## 3.9.1. Cómo cambiar su shell

La manera más fácil de cambiar de shell es mediante `chsh`. `chsh` le colocará dentro del editor que esté configurado en la variable de entorno `EDITOR`; si no la ha modificado, el sistema ejecutará `vi`, el editor por omisión. Cambie la línea «Shell:» según sus gustos.

También se le puede suministrar a `chsh` la opción `-s`; ésto establecerá la shell sin necesidad de entrar en el editor de texto. Si por ejemplo quiere que `bash` sea su shell por omisión puede configurarlo del siguiente modo:

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

Ejecutar `chsh` sin parámetros y editar la shell desde ahí también funciona.

> Nota: La shell que se desee usar debe estar incluida en `/etc/shells`. Si se ha instalado una shell desde la colección de ports esto deberí estar hecho automáticamente. Si ha instalado la shell manualmente, tendrá usted que realizar el cambio oportuno en `/etc/shells`.

> Por ejemplo, si instaló manualmente `bash` y lo ubicó en `/usr/local/bin` debería hacer lo siguiente:

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

> Hecho esto vuelva a ejecutar `chsh`.

Anterior | Inicio | Siguiente
Dæmons, señales y cómo matar procesos | Subir | Editores de texto

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.