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