Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Capitulo 2
- Usando la Shell.
- La shell es el nexo entre el usuario y el sistema operativo.
- El Usuario ingresa comandos, y la shell los interpreta.
- GNU/Linux permite usar varios tipos de shells, sin embargo la shell de los usuarios por defecto es bash.
- Bash implementa caracter�sticas de antiguas shells, como ksh ( Korn Shell )
- Las shells de los usuarios pueden ser cambiadas modificando el archivo /etc/passwd.
- O por el comando chsh.
- chsh -s /bin/zsh
- En sistemas BSD se puede hacer con chpass -s
- Cada usuario puede tener una shell distinta.
- Las disponibilidades de shells en el sistema se encuentran en /etc/shell.
- Con un cat /etc/shell ver�amos la cantidad de shells disponibles. ( o chsh -l )
- Algunas shells disponibles son:
- /bin/bash - Bourne-Again-shell es compatible con sh e incluye caracter�sticas de chs y ksh.
- Algunos sistemas linkean bash con bash2
- /bin/sh - Bourne shell
- /bin/ash - La Shell del SO System V
- /bin/bash2 - Segunda version de bash
- /bin/csh - La Shell creada por BSD
- /bin/tcsh. - Una mejora de csh
- /bin/ksh - ten�a un mejor funcionamiento que csh y tenia las ventajas de sh.
- Diferencias entre Shells.
- Seg�n el art�culo que encontr� en: http://www.faqs.org/faqs/unix-faq/shell/shell-differences/
- La primera shell escrita fue sh, que fue creada por C. S. Bourne.
- Se caracterizaba por tener todas las caracter�sticas de un lenguaje estructurado muy potente. Pero no era muy �til para interactuar con el usuario.
- Al tiempo llego csh, que introdujo facilidades de uso para el usuario*1, era escrito en C y en teor�a era deb�a funcionar muy bien, ya que que era el mismo lenguaje en el que fue escrito UNIX� pero en la realidad, csh conten�a varios bugs a la hora del shell scripiting, y se volvi� com�n, usar csh como shell para el usuario y sh para scripting.
- Debido a la cantidad de bugs de csh, mucha gente empez� a reparar estos errores y a agregar funcionalidades no est�ndares.
- Pero esto no fue el nacimiento de tcsh, ya que la gente se quedo con el est�ndar csh.
- Eventualmente llego David Korn de AT&T con la idea de clasificar todo esto, y naci� ksh, que m�s o menos arreglaba los problemas de csh y le agergaba excelente manejo para scrpiting de sh.
- Adem�s de agregarle algunas caracter�sticas que hizo que se convierta en la mejor shell del momento.
- Esta shell se convirti� en parte del Sistema V.
- El �nico problema era que hab�a que pagar usarla, ya que pertenec�a a AT&T.
- Por aquellos tiempos empezaron los primeros intentos por estandarizar UNIX� y se empez� con POSIX.
- POSIX especificaba m�s o menos, la shell del sistema V.
- Luego el est�ndar es actualizado y las especificaciones para la shell se parecen mucho a ksh.
- Tambi�n por estos tiempos comenzaba a aparecer el proyecto GNU, que sus objetivos eran crear una shell completamente libre y que siguiera el est�ndar POSIX.
- De aqu� nacio Bourne again shell (Bash)
- *1 Alias entre otras, consultar la fuente en que se baso este documento, para ver todas las diferencias t�cnicas entre shells.
- ------
- Si quisi�ramos de momento usar otra shell, con simplemente escribir su nombre estar�amos accediendo a esa otra shell.
- Ej: $ csh
- Si quisi�ramos volver a nuestra antigua shell, con tan solo escribir exit, o presionando CTRL+D saldr�amos de la actual y volver�amos a la que est�bamos usando.
- La shell predeterminada en el sistema se encuentra en la variable SHELL.
- Para ver su contenido basta con tipiar: echo $SHELL
- Para modificar nuestra shell, podemos acceder a nuestro archivo de configuraci�n, que se encuentra en nuestra home.
- La configuraci�n por defecto en las mayor�as de las distribuciones de GNU/Linux es la siguiente:
- cypress@turin /etc $
- Nombre de usuario, hostname, y ruta actual ( pwd ).
- Esta configuraci�n se encuentra en el archivio /etc/bashrc si deseamos modificarla debemos editar este archivo.
- Y editar� todas las shells de los usuarios.
- Existen tres ficheros en el directorio de un usuario que tienen un significado especial para la shell Bash. Estos ficheros permiten al usuario configurar el entorno de su cuenta autom�ticamente cuando entra en el sistema, cuando arranca un subshell o ejecutar comandos cuando sale del sistema.
- .bash_profile es el el mas importante de los tres. Es le�do y los comandos incluidos en el, ejecutados, cada vez que el usuario entra en el sistema. Cualquier cambio hecho en este fichero no tendr� efecto hasta que salgamos y entremos en el sistema de nuevo.
- .bashrc es le�do cuando el usuario arranca un subshell, escribiendo por ejemplo bash en la linea de comandos. Esto nos permite ejecutar diferentes comandos para la entrada al sistema o para la ejecuci�n de un subshell.
- .bash_logout es el fichero leido por Bash, cuando salimos del sistema. Podemos definir, por ejemplo que se borren los ficheros temporales creados en nuestra ultima sesi�n o registrar el tiempo que hemos estado utilizando el sistema. Si .bash_logout no existe, ningun comando sera ejcutado a nuestra salida.
- Command completion:
- Es una de las mejores cosas que tiene GNU/Linux, es el �completado de comandos� al empezar a escribir un comando, al presionar la tecla Tab, el sistema auto completar� el comando.
- Ej:
- iwcon
- al presionar tab, el sistema completar� con iwconfig.
- En el caso de haber dos comandos, que tengan igual inicio, el sistema har� sonar un beep (dependiendo de la distribuci�n). Si se presiona otra vez tab, desplegar� los comandos que se coincidan.
- Ej:
- iw
- Al presionar tab, el sistema sonar� un beep.
- Al presionar otra vez tab, el sistema desplegar�:
- iwconfig iwevent iwgetid iwlist iwpriv iwspy
- Todo esto es editable desde el archivo /etc/bash_completition
- Algunas opciones dentro de bash:
- ctrl+b : mueve para atr�s el cursor (backwards)
- ctrl+f : mueve hacia adelante el cursor (foward)
- ctrl+k : Borra toda la linea del cursor en adelante
- Para hacer cambios globales sobre estas caracter�sticas, se debe editar el archivo el archivo /etc/inputrc Configuraciones caracter�sticas para cada usuario, desde ~/.inputrc
- Historial de Bash:
- Los comandos tipiados en nuestra shell son guardados en el archivo .bash_history del directorio home del usuario.
- La variable $HISTCMD muestar la cantidad de comandos en el historial (el numero).
- El comando history muestra todo el historial, es lo mismo que hacer
- $ echo ~/.bash_history
- Variables de entorno:
- Cualquier comando es un proceso, estos procesos (padres) pueden desatar otros procesos, que son llamados procesos hijos.
- Puede haber un solo proceso padre pero varios hijos.
- Cada proceso define sus propias variables de entorno, y en el caso de los padres, las variables son heredadas a sus hijos.
- -Variable PATH:
- La variable PATH, indica que directorios en el sistema deben ser mirados para ejecutar binarios.
- Si la variable PATH no est� definida, el sistema busca siempre en los directorios /bin y /sbin
- Para ver el contenido de la variable PATH, vasta con tipiar:
- $ echo $PATH
- /bin:/usr/bin:/usr/local/bin
- Para ejecutar un binario que no se encuentre en PATH, ej, un archivo en el home.
- Se debe escribir
- ~ $ ./script.sh
- Ah� se ejecutaria el archivo script.sh que se encuentra en el home del usuario.
- El ./ especifica que est�s corriendo el binario desde el pwd
- Editando la variable de entorno PATH:
- Las rutas que est�n definidas para todos los usuarios se encuentran en el archivo /etc/profile modifcando la linea que empieza por PATH=
- Una vez relogeado, el cambio tomar� efecto. Para configuraciones individuales, modificar el archivo ~/.bash_profile
- Si quisi�ramos agregar alguna ruta al actual PATH editar�amos en el ~/.bash_profile y agregar�amos:
- PATH=�$PATH:$HOME/bin�
- export PATH
- Esto agrega al path el directorio ~/bin
- Pimp my Prompt:
- El prompt por defecto de GNU/Linux tiene m�s o menos la forma descripta abajo, pero como todo en GNU/Linux, es configurable, el prompt no es la excepci�n.
- cypress@turin /etc $ esta configuraci�n viene por defecto.
- Esto es definido en el archivo /etc/bashrc ( editable como superusuario )
- En la definici�n de la variable PS1 podemos ver esto:
- PS1= "[\u@\h \W]\$ "
- Significado:
- \u Usuario actualmente logeado
- \h El Hostname
- \W El directorio actual
- \$ Muestra $ para usuarios normales y # para el root
- \d Fecha actual
- \t Hora actual
- \s Nombre de la shell
- \n Nueva linea
- \\ Contra barra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement