Una de las herramientas mas potentes de Linux es el uso de la Shell, la cual provee de una serie muy grande de comando para ejecutar tareas, programar, graficar datos, etc. En esta sección mostramos datos interesantes sobre su uso y comandos.
Shell
La shell es el intérprete de órdenes que
utiliza Linux, bueno Unix en general. No hay una sola
shell, sino que cada usuario puede elegir la que quiera en
cada momento. Además las shells funcionan como
lenguajes de programación de alto nivel, lo que se
estuaciará en un capítulo posterior.
En principio hay dos familias de shell, las shell de Bourne
y las shell C. Dentro de cada una de ellas hay diferentes
vesiones, como por ejemplo ksh (Korn shell) o bash (Bourne
Again Shell),. Nosotros en Linux vamos a usar esta
última, aunque gran parte de las cosas son
aplicables a otras shell.
Definiciones
Variables de shell
Una variable de shell es una zona de almacenamiento de información con un nombre que la identifica. Para no liarnos mucho, es similar a un variable en lenguaje C. Podemos asignar un valor a una variable mediante el operador ?=?. Si la variable no existe el operador ?=? la crea. No se debe dejar espacio entre el nombre de la variable y el operador de asignación (=).Para usar el valor de una variable es necesario anteponerle el símbolo ?$?.
Ejemplos:
$ AA=Hola que tal
$ echo AA
$ echo $AA
|
Variables de entorno
Son variables que tienen un significado propio para la shell o algún otro programa. Ciertos programas leen el contenido de las variables de entorno par mosificar su comportamiento, entre ellos la propia shell.Entre la variables de entorno más importantes podemos citar:
-
PATH Indica la ruta de
búsqueda de programas ejecutables.
Está constituida por una lista de
directorios separados por ?:?. El directorio
actual, de forma predeterminada, no viene incluida
en PATH.
-
PS1 Especifica el
indicador del sistema. Lo habitual es que PS1 sea
?$? para usuarios normales y ?#? para root.
-
PS2 Especifica el
indicador secundario del sistema. Aparece cuando no
se ha completado una orden.
-
LANG Especifica el
lenguaje que se aplica al usuario. Para
español se utiliza ?es?.
-
LC_ALL Contiene el idioma
y se utoiliza para usar los valores locales como
mensajes del sistema, símbolo monetario,
formato de fecha, formato de números
decimales y otras características.
-
TERM Indica el tipo de
teminal que se está utilizando. Por ejemplo,
si estamos en la consola el valor de TERM
será ?linux?, para usar las
carácterísticas del teclado. Si
entramos por telnet desde w9x entonces
probablemente tengamos que poner vt100.
-
EDITOR Especifica el
editor por omisión del sistema. Lo habitual
en los sistema Unix es que el editor por
omisión sea ?vi?.
-
DISPLAY Especifica
qué equipo muestra la salida que se
efectúa en modo gráfico. Ese equipo
deberá tener un servidor gráfico.
-
LD_LIBRARY_PATH Esta
variable se utiliza para definir rutas alternativas
de búsqueda de para bibliotecas de funciones
del sistema.
-
PWD Contiene el directorio
de trabajo efectivo.
Ejemplo:
$ env
PWD=/home/usuario/public_html/docs/shell
LTDL_LIBRARY_PATH=/home/usuario/.kde/lib:/usr/lib
HOSTNAME=www.bdat.com
LD_LIBRARY_PATH=/home/usuario/.kde/lib:/usr/lib
QTDIR=/usr/lib/qt-2.2.2
CLASSPATH=./:/usr/lib/jdk118/lib/classes.zip
LESSOPEN=|/usr/bin/lesspipe.sh %s
PS1=[\u(EN)\h\W]$
KDEDIR=/usr
BROWSER=/usr/bin/netscape
USER=usuario
MACHTYPE=i386-redhat-linux-gnu
LC_ALL=es_ES
MAIL=/var/spool/mail/usuario
EDITOR=joe
LANG=es
COLORTERM=
DISPLAY=:0
LOGNAME=usuario
SHLVL=4
LC_CTYPE=iso-8859-1
SESSION_MANAGER=local/www.bdat.com:/tmp/.ICE-unix/965
SHELL=/bin/bash
HOSTTYPE=i386
OSTYPE=linux-gnu
HISTSIZE=100
HOME=/home/usuario
TERM=xterm
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/lib/jdk118/bin:./:/sbin:/usr/sbin:/usr/local/sbin:/opt/netscape
GROFF_TYPESETTER=latin1
LESSCHARSET=latin1
|
Ficheros ejecutables
Un fichero ejecutable es un fichero que tenga asignado el permiso de ejecución.Los ficheros ejecutables pueden ser de dos tipos:
Binarios, cuando son resultado de la compilación de un programa, por ejemplo en C.
Programas de shell, llamados scripts o guiones. Son ficheros de texto que contienen órdenes de shell y son interpretados por una shell.
Como ya dije anteriormente, un sistema unix reconoce un fichero como ejecutable por disponer del permiso de ejecución activo, no por ningún tipo de extensión en el nombr del fichero.
Shell y subshell
Podemos abrir una nueva shell simplemente ejecutando el fichero binario que contiene la shell.También, cuando ejecutamos un script se abre una nueva shell que es la encargada de ir interpretando las diferentes órdenes y de mantener el valor de las variables definidas. Esta subshell tiene como tiempo de vida el tiempo de ejecución del script. Además esta subshell hereda el valor de parte de las variables de entorno, pero en su propio espacio de memoria, por lo que las modificaciones de cualquier variable de la nueva shell no tendrá repercusión en la shell padre.
Cerrar una shell
Para cerrar una shell usamos la orden exit. Esta orden termina la ejecución de la shell y vuelve a la shell padre. Si ejecutamos la orden exit sobre la shell inicial que abrimos al entrar al sistema (llamada login shell) entonces terminamos la sesión de trabajo.Variables exportadas
En el apartado anterior, veíamos que una subshell hereda parte de las variables definidas en la la shell padre. Para que las shell hijas de una dterminada shell hereden una variable es necesario indicarlo explícitamente con la orden export. Por ejemplo, si queremos que el valor de la variable EDITOR pase a las subshell que sean hijas de la shell activa, tendremos que poner$ export EDITOR
|
$ export EDITOR=vi
|
Ejemplos:
Asignar la palabra contenido a una variable llamada AA
$ AA=contenido
|
$ echo $AA
|
$ /bin/bash
|
$ echo $AA
|
$ exit
|
$ echo $AA
|
$ export AA
|
$ /bin/bash
|
$ echo $AA
|
Las comillas en la shell
En las operaciones con la shell distinguimos tres tipos de comillas con distintas funcionalidades: las comillas dobles, las comillas simples y las comillas invertidaa, el acento grave francés. A continuación describimos las funcdiones:' Engloban un literal. La shell no trata de interpretar nada de lo que haya comprendido entre estas comillas.
? La shell expande las variables que haya especificadas sustituyendo su nombre por el contenido. Para imprimir un $ es necesario protegerlo con una \.
` La shell intenta ejecutar lo que haya comprendido entre estas comillas.
Ejemplo:
Asignamos una valor a una variable:
$ AA=?ls -la? |
echo '$AA' echo "$AA" echo `$AA` |
Personalización de la shell
Cada vez que se inicia una shell, se lee un fichero de configuración. No es un fichero complejo, es simplemente un fichero con ódenes que se se ejecutan automáticamente cada vez que se inicia una nueva shell.Diferentes shell utilizan diferentes ficheros de configuración. Las shell C suelen llamar a este fichero .login. Las shell de Bourne suelen llamar a este fichero .profile. En la shell bash, además del .profile, tenemos también el fichero .bashrc.
En este fichero vamos a ejecutar las órdenes y asiganar valores a variables necesarios para adaptar la shell a nuestras necesidades. En general, todo aquéllo que queramos que se ejecute cada vez que entremos al sistema. Por ejemplo, nos puede interesar añadir a este fichero una línea como:
$ export LANG=es |
También podemos poner . (directorioactivo) en la ruta de búsqueda de programas ejecutables:
$ export PATH=$PATH:. |
Nota legal: Se permite la reproducción parcial o total de estos
textos en cualquier medio, impreso o electrónico,
siempre que no se impongan condiciones adicionales a la
reproducción y distribución de las copias o
de los trabajos derivados que incorporen este documento. En
resumen, cualquier trabajo derivado de ese texto debe
mantener esta nota de copyright.
No hay comentarios:
Publicar un comentario