Shell

domingo, 1 de junio de 2008

Lo que ocurre internamente en tu ordenador cuando este ejecuta una acción, tal como, leer un fichero, grabar un documento, acceder al CD-Rom o ejecutar un programa, es un proceso bastante complicado y que requiere una serie de acciones por parte de tu sistema operativo. Por si esto no es suficiente, necesitamos también, una manera de poder comunicarnos con nuestro sistema operativo para decirle que es lo que queremos hacer. Es aqui donde un intérprete de comandos (shell) hace su trabajo.
Un shell o intérprete de comando es el proceso encargado de traducir los comandos que los usuarios introducen, a instrucciones que el sistema operativo entiende. Es el programa que se encuentra entre el sistema operativo y el usuario ,el cual nos hace la vida mas fácil.

Todo usuario que quiera profundizar en un sistema Unix/linux tendrá más tarde ó temprano que familiarizarse con el shell de su sistema, el cual se convertirá en una herramienta imprescindible en la administración diaria del sistema, tanto por su potencia como versatilidad.

El shell es el inteérprete de comandos de UNIX , el equivalente al COMMAND.COM de MSDOS. Es decir, es el que coge todo lo que tecleamos y lo convierte en un programa que se ejecuta.

Para empezar, no hay un shell, sino muchos shells. El más simple es sh, o Bourne shell, que es tan simple que practicamente nadie utiliza, sin embargo, es el más comun a todos los sistemas, y además, ciertos programas lo usan, sobre todo los programas de instalación (precisamente por eso, por ser el minimo comun denominador de los shells). Algunos shells se derivan de este, como el bash (Bourne again shell, el oficial de la GNU), y el Korh shell, ksh

El mas utilizado es el C shell y sus variantes, sobre todo el tcsh, (que es precisamente el que usa el ordenador de la escuela de informática). El tcsh tiene mas facilidades para edición de la línea de comandos, completa los nombres de los ficheros, y muchas más cosas. A partir de ahora, por defecto, trataremos con el csh, que es el mas usado

El shell es un entorno de trabajo, con una serie de comandos internos. La mayoría de los comandos que se usan en UNIX son externos, como ls, pero algunos son internos. Tambien tiene una serie de propiedades, que permiten controlar el entorno de trabajo y los programas que se ejecutan desde él.

El shell se puede cambiar de diferentes formas:

-Pedírselo al administrador del sistema
-En algunos casos se puede usar chsh; como hay que acceder al fichero de passwords, normalmente pide la clave.
-Simplemente, ejecutar el shell que uno quiera; por ejemplo, tcsh

Los más usados, aunque la mayoria lo son en scripts o programas de ejecución por lotes, son los siguientes:

Alias permite llamar a un comando, con sus opciones, de otra forma; por ejemplo, alias dir ls -alt permitirá sustituir el comando ls con sus opciones por el comando dir. La orden alias sin ninguna opcion da todos los comandos que hay definidos de esa forma; y unalias elimina un alias. Con alias se pueden formar comandos complejos, separando varias órdenes por ;, como por ejemplo

alias pushd 'pushd \!*;cd .'

, sustituye pushd por la secuencia de los dos comandos indicados; en este caso se usa el nombre de una orden ya existente; los alias la sustituyen, y tienen mas prioridad que ellas. Por ejemplo, para que cambie el directorio en el prompt hay que hacer un alias

alias cd 'chdir \!*;set prompt="(%B%M%b) %~> ";echo

-n ""'

. Ojo: en bash funciona de otra forma diferente:

alias dir= '/bin/ls \$LS_OPTIONS

--format=vertical'

, por ejemplo.

echo Echo simplemente escribe lo que tiene detrás, si acaso metido entre parentesis. O sea, como en MSDOS. Tiene alguna ventaja más, por ejemplo, puede usar globbing (es decir, expansión de comodines de ficheros), y además se sustituyen las variables por su valor.

Cada shell tiene ficheros de inicialización diferentes; en general, hay un fichero que que se ejecuta cuando uno se conecta al ordenador; otro que se ejecuta cada vez que se abre un shell, y es por tanto un fichero de inicialización del shell, y otros a veces tienen ficheros que se ejecutan cuando se desconecta uno. Otro fichero almacena las órdenes que se han ejecutado hasta ese momento.

tcsh

.tcshrc/.cshrc, .history, .login, .logout.

bash

.bash_profile/.profile, .bash_logout, .bash_history

Hay un documento con todas las diferencias en http://www.faqs.org/faqs/unix-faq/shell/shell-differences/

Ejercicios 8 Cambiar el fichero de inicialización del shell que se esté usando para que:

Ponga un prompt personalizado.

Haga un alias del comando cd para que se mantenga en el prompt siempre el nombre de directorio actual.

Diseño por Open Media | A Blogger por Blog and Web