76
Escuela de Informática y Telecomunicaciones La Shell Bash

La Shell Bash

  • Upload
    inge

  • View
    115

  • Download
    2

Embed Size (px)

DESCRIPTION

La Shell Bash. Capitulo 1. Introducción a Bash. Shell Bash. La shell es lo que ve cuando abre una terminal y lo que más usa para iniciar cada comando Hay una variedad de shells disponibles, pero todas hacen los mismo: Escuchar comandos Iniciar procesos informar los resultados. - PowerPoint PPT Presentation

Citation preview

Page 1: La Shell  Bash

Escuela deInformática y Telecomunicaciones

La Shell Bash

Page 2: La Shell  Bash

Escuela deInformática y Telecomunicaciones

Capitulo 1

Introducción a Bash

Page 3: La Shell  Bash

3© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Shell BashLa shell es lo que ve cuando abre una

terminal y lo que más usa para iniciar cada comando

Hay una variedad de shells disponibles, pero todas hacen los mismo:

–Escuchar comandos–Iniciar procesos–informar los resultados

Page 4: La Shell  Bash

4© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Shell BashLa shell más utilizada en Linux es la shell

bash, la cual es la shell por defecto en Red Hat Enterprise Linux

La shell bash tiene capacidades de gran alcance para facilitar tareas complejas o incluso hacerlas posibles.

Está diseñada para 2 tipos diferentes de uso shell interactiva y script de shell

Page 5: La Shell  Bash

5© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Shell interactiva Permite interactuar con el usuario Repiten el ciclo de :

–Escuchar una línea de comandos–Evalúa el comando solicitado–Realiza todas las acciones solicitadas –Muestra los resultados

La shell escucha al teclado de entrada y emplea la tecla de ENTER para reconocer el final de la entrada

Page 6: La Shell  Bash

6© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Script de Shell Los scripts de la shell bash son programas

pequeños escritos mediante la misma sintaxis que se utiliza en la línea de comandos.

Permiten a los usuarios automatizar las acciones repetidas al combinar una serie de comandos

Ejecutan una serie de comandos en modo no interactivo

La shell bash provee una programación lógica (tales como ramas y bucles) para escribir scripts sofisticado

Page 7: La Shell  Bash

7© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Shell de inicio Cada vez que alguien inicie sesión o abra una terminal,

una shell se inicia automáticamente

La shell es sólo "otro programa", nuevas shells pueden iniciarse desde la shell existente

La nueva shell se denomina subshell de la shell original

Cuando se sale de la subshell, el control vuelve a la shell original

Page 8: La Shell  Bash

8© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

El archivo ~/.bashrc Al iniciarse la shell bash busca en el

directorio de inicio del usuario un archivo titulado .bashrc

Los comandos listados en el archivo se ejecutan como si fueran escritos en la línea de comandos

Page 9: La Shell  Bash

9© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Historial de comandos El comando shell bash mantiene el

historial de cada uno de los comandos escritos por el usuario

Ofrece varias formas para desplegar el historial

La más común es con el comando History

Page 10: La Shell  Bash

10© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Sustitución de historial La shell bash también realiza "sustitución

de historial", la cual se desencadena por el signo de exclamación

Page 11: La Shell  Bash

11© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Conservar el historial entre sesiones La shell bash conserva los historiales de

comandos entre sesiones en el archivo .bash_history en el directorio de inicio

Los comandos ejecutados en un proceso bash no están disponibles en el historial cuando se ejecutan más de un bash en forma simultanea

La última shell al salir sobrescribirá las historias de las shells que salieron anteriormente

Page 12: La Shell  Bash

12© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Conservar el historial entre sesiones

Page 13: La Shell  Bash

13© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Trucos del historial de comandos ESC-. y ALT-.

–El último simbolo de un comando suele representar el objeto que alguien está manipulando.

CTRL-R –Muestra los comando tecleados anteriormente

fc–Permite editar el comando con el editor vi

Page 14: La Shell  Bash

Escuela deInformática y Telecomunicaciones

Capitulo 2

Listas de comandos y scripts

Page 15: La Shell  Bash

15© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Ejecución de comandos Ejecución de comandos múltiples

–La shell bash permite a los usuarios unir comandos múltiples en una sola línea de comandos separando los comandos con un ;.

Ejecución de comandos en una subshell –Permite a los usuarios la fácil ejecución de comandos en una subshell, delimitando el comando entre paréntesis.

–Las subshells se utilizan para evitar efectos secundarios.

Page 16: La Shell  Bash

16© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Ejecución de comandosEjemplo con subshell

Ejemplo sin subshell

[elvis@station elvis]$ (cd /etc/X11; ls)

[elvis@station elvis]$ bash [elvis@station elvis]$ cd /etc/X11; ls [elvis@station elvis]$ exit

Page 17: La Shell  Bash

17© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Introducción a los scripts de shell Los comandos se envían a través de un

programa específico llamado intérprete, el cual ejecuta un comando a la vez.

Este intérprete suele ser la shell bash

Page 18: La Shell  Bash

18© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Que se debe saber de los script de shell La primera línea de su script debe especificar a

qué intérprete enviar las instrucciones. Se hace con una cadena especial llamada

"shebang" y le sigue el interprete para el script –Ejemplo, para usar bash como su intérprete usted debería usar #!/bin/sh o #!/bin/bash.

–La mayoría de los scripts sólo usan #!/bin/sh.

Page 19: La Shell  Bash

19© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Que se debe saber de los script de shell Antes de ejecutar un script, se debe habilitar el

permiso "ejecutable" en él (de lo contrario, es sólo un archivo de texto).

Por seguridad no se puede ejecutar el script en el directorio actual, ya que existen rutas de ejecución–Se pueden utilizar comodines relativos (~/foo.sh o ./foo.sh)

–colocar el script en un directorio que sea parte de su RUTA o crear una carpeta bin dentro del home

Page 20: La Shell  Bash

20© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Ejemplo de script

Page 21: La Shell  Bash

21© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Valores de retorno Cada proceso en Linux tiene un ciclo de vida

–los procesos comienzan a solicitud de otro proceso (a menudo shell).

–El proceso solicitado se denomina padre y el proceso recién nacido el hijo

–proceso hijo suele realizar sus deberes y luego muere

–Un proceso de salida deja atrás una pequeña parte de información cuando muere (retorno o estatus de salida)

–El proceso padre es responsable de reunir los valores de retorno de los hijos muertos

Page 22: La Shell  Bash

22© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Valores de retorno

Los valores de retorno vienen en forma de enteros los cuales van de 0 a 255

Los programas pueden escoger libremente el valor al salir

Un programa devuelve en 0 para implicar "éxito"

Se almacena el valor de retorno del comando ejecutado anteriormente en una variable especial llamada ?–echo $?

Page 23: La Shell  Bash

23© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesEjecución de comandos múltiples de modo condicional La shell bash usa &&y || para unir dos

comandos de modo condicional Cuando los comandos se unen de este

modo, el primero siempre se ejecutará. El segundo comando puede que se

ejecute o no dependiendo del valor de retorno del primer comando

Page 24: La Shell  Bash

24© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesEjecución de comandos múltiples de modo condicional

Comando && (and)–En caso que el primer comando tenga éxito se ejecuta el siguiente comando

Comando || (or)–En caso que el primer comando fallara se ejecuta el siguiente

Page 25: La Shell  Bash

Escuela deInformática y Telecomunicaciones

Capitulo 3

Variable de bash

Page 26: La Shell  Bash

26© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesConceptos básicos de la variable de shell La shell bash le permite a los usuarios

establecer y hacer referencia a las variables de shell

Una variable de shell es simplemente un valor con nombre que la shell recuerda

Se pueden utilizar en comandos y scripts de shell y pueden también referenciarse en programas como opciones de configuración

Hay dos tipos de variables de shell: variables locales y variables de entorno

Page 27: La Shell  Bash

27© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Variables locales

Existe solo dentro de la shell en la cual se crea Las shells hijas heredan las variables de entorno

como cuando se lanza una terminal después de iniciar sesión

Las variables se establecen y se configuran con una sintaxis VAR=valor y se referencian con una sintaxis $VAR.

La variable se referencia con el comando unset

Page 28: La Shell  Bash

28© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Detalles de la variable de shell

Los nombres de variables pueden ser cualquier cadena de caracteres alfanuméricos (A-Z, a-z, 0-9), y el guión bajo (_)

No pueden comenzar por un número Distinguen mayúsculas de minúsculas Si quiere establecer una variable a un valor que

contenga espacios, debe incluir el valor entre comillas

Utilizar corchetes para delinear nombres de variable siempre es correcto

Page 29: La Shell  Bash

29© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Variables de Bash

Variables Bash de sólo lectura

Page 30: La Shell  Bash

30© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Variables de Bash

Variables Bash preasignadas

Page 31: La Shell  Bash

31© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Variables de entorno

Una variable de shell se crea y luego la variable de shell es "promovida" a una variable de entorno mediante el comando export

Page 32: La Shell  Bash

32© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Listado de variables El comando set, sin argumentos, lista las

variables de shell y las variables de entorno asociadas con la shell, mientras que el comando env, otra vez sin argumentos, lista sólo variables que han sido exportadas al entorno.

Page 33: La Shell  Bash

33© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Variables de entorno más utilizadas

Page 34: La Shell  Bash

34© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Variable PATH Cuando se ingresa un comando por la shell

bash la consola debe buscar el comando en el sistema

Si la búsqueda fuera completa demoraría mucho la consola

La variable de entorno PATH contiene una lista de directorios en los cuales deberían buscar los archivos ejecutables, separados por una coma

Page 35: La Shell  Bash

Escuela deInformática y Telecomunicaciones

Capitulo 4

Expansión de la línea de comandos

Page 36: La Shell  Bash

36© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Generalidades Antes de ejecutar un comando, la shell

bash ejecuta varias expansiones en la línea de comandos.

Varios tipos de expansiones de bash, tales como la expansón del nombre de ruta (comodín) y la expansión de variables ya se han descrito

Page 37: La Shell  Bash

37© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Expansión de la línea de comandos

Page 38: La Shell  Bash

38© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Expansión de llaves

La expansión de llaves expande una sola palabra en palabras múltiples

Sustituye uno de los elementos en "llave" para cada palabra.

Ejemplo–La expresión {c,b,r}at se expandiría en tres palabras cat bat rat

Page 39: La Shell  Bash

39© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Expansión de llaves[prince@station prince]$ mkdir chap{01,02,03,04}

|-- chap01/

|-- chap02/

|-- chap03/

`-- chap04/

Page 40: La Shell  Bash

40© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Expansión de llaves

[prince@station prince]$ mkdir chap{01,02}/{html,text}

|-- chap01/

| |-- html/

| `-- text/

|-- chap02/

| |-- html/

`-- text/

Page 41: La Shell  Bash

41© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Expansión de tilde expande un ~nombredeusuario para el

usuario del directorio de inicio del nombredeusuario

Page 42: La Shell  Bash

42© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Expansión aritmética

La shell bash trata de manera especial texto delimitado con una sintaxis $((...))

Las variables se tratan como enteros numéricos y los operadores matemáticos estándar como +, -, *, y / se tratan como tal.

La shell bash sólo soporta enteros aritméticos.

Page 43: La Shell  Bash

43© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Sustitución de comandos

Permite a los usuarios ejecutar comandos arbitrarios en la subshell e incorporar los resultados dentro de la línea de comandos

La sintaxis de antigua era encerrar el comando entre "acentos graves"

La sintaxis más moderna similar a la expansión aritmética, pero con solo un par de paréntesis: $(subcomando)

Page 44: La Shell  Bash

44© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Expansión de nombre de ruta

Page 45: La Shell  Bash

45© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Comillas y caracteres de escape

La shell bash proporciona tres mecanismos para evitar que los caracteres sean interpretados por la shell, escapando, utilizando comillas dobles o sencillas.

Page 46: La Shell  Bash

46© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Comillas y caracteres de escape

Page 47: La Shell  Bash

47© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Comillas y caracteres de escape

Comillas dobles: "..."–Las comillas dobles se utilizan en situaciones donde usted desearía tratar la mayoría de la puntuación literalmente o combinar palabras en un sólo símbolo, pero aún puede hacer uso de variables, sustitución de comandos y sustitución de historial

Comillas sencillas inclinadas a la derecha (apóstrofes): '...'–Las comillas sencillas son las más poderosas y se utilizan en situaciones similares a las comillas dobles cuando quiere que toda la puntuación, incluyendo las variables y la sustitución de comandos, se traten literalmente.

Page 48: La Shell  Bash

48© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Comillas y caracteres de escape

Comillas sencillas inclinadas hacia la izquierda (acentos graves): `...`

–Los acentos graves son básicamente diferentes a las comillas simples o dobles, no son para citar. Estos acentos se utilizan para invocar la sustitución de comandos en el texto incluido.

Page 49: La Shell  Bash

49© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Otras expansionesExpansión de variables

–$VARNAME o ${VARNAME}

Expansión del historial

Page 50: La Shell  Bash

Escuela deInformática y Telecomunicaciones

Capítulo 5

Personalización de la shell

Page 51: La Shell  Bash

51© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Comandos internos de la shell

Al evaluar una línea de comandos, la shell trata la primera palabra como un comando.

La shell bash implementa algunos comandos de modo interno, lo que significa que los comandos no existen en el sistema de archivos como un programa cargable, sino que la shell misma los implementa.

Estos comandos se conocen como comandos internos de la shell.

Estos suelen ser comandos sencillos relacionados con cambios a la shell misma.

Page 52: La Shell  Bash

52© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Comandos internos de la shellLos comandos internos al no ser parte de

un programa cargado, al consultar su origen no va a mostrar nada (which cd)

Un ejemplo de comando interno es el comando help

Otros comandos utilizados son: cd, pwd, echo

Page 53: La Shell  Bash

53© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

AliasLos alias permiten a los usuarios

personalizar los nombres de los comandos o enlazar comandos con las opciones o argumentos más utilizados.

Una vez creados, los alias se utilizan como si fueran cualquier otro comando.

Page 54: La Shell  Bash

54© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Alias

Los alias se crean (y examinan) mediante el comando interno alias.–alias NAME=VALOR

Este comando crearía un alias denominado NOMBRE, el cual apuntaría al valor VALOR.

La asignación de alias no permite espacios en ningún lado del signo de igual

Las frases que contienen múltiples palabras (separadas por espacios) deben ir entre comillas

El comando alias también se utiliza para examinar los alias actualmente definidos.

Page 55: La Shell  Bash

55© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

unaliasLos alias se pueden suprimir con el

comando interno de la shell unalias.Para suprimir un alias, pase el nombre de

alias como un argumento al comando unalias

Page 56: La Shell  Bash

56© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Evaluación de alias ¿Cuándo busca alias la shell de bash ? Se busca alias en donde se espera un

comando Si la primera palabra es reconocida como un

alias , el alias se expande La excepción es si el alias se expande al

comando que tiene el mismo nombre de alias en cuyo caso la shell simplemente ejecuta la expansión y sigue adelante

Page 57: La Shell  Bash

57© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Algoritmo de Ejecución de comandos

1.Realiza cualquier expansión de la shell2.¿La palabra se define como un alias? Si es así, expanda el alias y

vuelva a comenzar (a menos que el alias se expanda a un comando que tenga el mismo nombre del alias en cuyo caso expande el alias y empieza de nuevo, pero no vuelve a expandir alias).

3.¿La palabra se define como una función de una shell? Si es así, llame la función de la shell en la shell actual, (las funciones de la shell van más allá del alcance de este curso, pero están incuídas aquí para completar la información).

4.¿La palabra es un comando intermo de la shell? Si es así, ejecute el comando interno.

5.¿La palabra contiene un /? Si es así, ejecute el archivo si existe y tiene permisos ejecutables.

6.Si la palabra no contiene un /, busque un archivo con un nombre similar en todos los directorios en orden como se definió en el entorno de variable PATH. Si existe un archivo coincidente y tiene permisos ejecutables, ejecute el archivo.

Page 58: La Shell  Bash

58© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesPersonalizar el intérprete de comandos de bash

Escuchar Evaluar

Ejecutar

Interprete Primario PS1

Interprete Secundario PS2

¿Falta por ejecutar?

Page 59: La Shell  Bash

59© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Personalización de PS1 y PS2

Page 60: La Shell  Bash

60© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Personalización de PS1 y PS2

Secuencias de escape comunes utilizadas en intérpretes de comandos bash

Page 61: La Shell  Bash

61© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesBanderas de la shell: el comando interno setCuando se utiliza con la línea de

comandos, como suele ser el caso, el comando se utiliza para establecer, o anular las banderas de shell.

Cuando se llamado sin argumentos, el comando set visualiza todas las variables de shell y sus valores

Page 62: La Shell  Bash

62© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesBanderas de la shell: el comando interno set

Page 63: La Shell  Bash

63© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesBanderas de la shell: el comando interno set

El comando set con la sintaxis normal de las opciones (tal como set -x) habilita la bandera especificada. Para inhabilitar la bandera, remplace el guión (-) por un signo más (+) (tal como set +x).

Page 64: La Shell  Bash

64© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesOpciones de la shell: el comando interno shoptEl comando bash también tiene una

segunda serie de variables de configuración, las cuales se conocen como "opciones de shell“

Se establecen –shopt -s nombreopción

Se anulan–shopt -u nombreopción

Page 65: La Shell  Bash

65© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesOpciones de la shell: el comando interno shopt

El comando shopt nombreopción visualiza el estado actual de la opción

Solo shopt visualiza todas las opciones de la shell

Page 66: La Shell  Bash

66© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesOpciones de la shell: el comando interno shopt

Page 67: La Shell  Bash

Escuela deInformática y Telecomunicaciones

Capítulo 6

Lectura de scripts de shell e inicialización de shell

Page 68: La Shell  Bash

68© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Lectura de scriptsLa shell bash lee el archivo de script y lo

ejecuta como si ingresaran los comandos por teclado

La ejecución puede modificar las variables y configuraciones de la shell actual

Page 69: La Shell  Bash

69© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Tipos de ShellLas shell se pueden diferenciar en 2

grupos–Shells diferenciadas por el tipo de inicio• Shell de inicio de sesión• Shell de no inicio o de inicio manual

–Shells diferenciadas por la interacción con el usuario• Shell interactiva• Shell no interactiva

Page 70: La Shell  Bash

70© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Tipos de Shell

Shell de inicio de sesión–Shells que se accede al acceder a una consola virtual o maquina remota

–Primero se lee el archivo /etc/profile para inicializar variables de entorno

–Luego origina todos los archivos coincidentes al patrón /etc/profile.d/*.sh.

–Busca una serie de archivos en el directorio de inicio del usuario• ~/.bash_profile

–Busca y origina el archivo~/.bashrc

Page 71: La Shell  Bash

71© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Tipos de Shell

Shells de no-inicio de sesión (interactivas)–El único archivo utilizado para personalizar shells de no-inicio de sesión es el archivo

~/.bashrc–También existe el archivo de configuración global en /etc/bashrc

Shells de no-inicio de sesión (no interactivas)–No leen por defecto ninguno de los archivos de arranque (aunque esta conducta puede

cambiarse estableciendo la variable de entorno BASH_ENV)

Page 72: La Shell  Bash

72© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesArchivos de configuración de arranque bash

Page 73: La Shell  Bash

73© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

¿Por qué hay de shells de inicio y no inicio de sesión? Al arrancar, los varios scripts de arranque

leídos por shells de inicio tienden a emplear mucho tiempo personalizando variables de entorno

Cuando las subsehells se inician, no se necesita repetir todo este trabajo.

Cuando un proceso hijo es generado por la shell de inicio de sesión, las variables de entorno se copian automáticamente en el hijo

Page 74: La Shell  Bash

74© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

¿Por qué hay de shells de inicio y no inicio de sesión?

Archivos de configuración de arranque bash

Page 75: La Shell  Bash

75© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

¿Por qué hay shells interactivas y no - interactivas?Las shells no-interactivas son shells

iniciadas como resultado de ejecutar un script

Con el fin de evitar posibles efectos secundarios del script de arranque, las shells no-interactivas no leen scripts de arranque tras el inicio.

Page 76: La Shell  Bash

76© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y TelecomunicacionesSalida de las shells de inicio de sesión: ~/.bash_logoutTras la salida, las shells de inicio de

sesión leerán el archivo ~/.bash_logout si existe.

En RHEL el archivo simplemente ejecuta el comando clear para que la pantalla se limpie de información tras la salida.