FIB Primavera 03 Introducción a los Sistemas Operativos El intérprete de comandos 1. Proceso de boot del sistema: inicialización 2. Intérprete de comandos Bibliografía Sebastián Sánchez UNIX y LINUX guía práctica Tanembaum Operating Systems. Design and implementation. Chap. 1: Introduction Chap. 2.1: Introduction to processes Vahalia UNIX Internals: the New Frontiers Chap. 4.9: Process Groups and Terminal Management Introducció als Sistemes Operatius Marisa Gil 1 FIB Primavera 03 INTRODUCCIÓN Proceso de boot del sistema disco de sistema MEMORIA bootstrap lee el 1er sector del disco del drive 0 y lo copia en memoria (bootstrap) carga el SO y salta a él SO ejecuta la rutina main(): inicializa el sistema (hardware,vars,config...) “construye” el 1er proceso y lo pone a ejecutar init lanza un programa getty por terminal getty ... getty ... Introducció als Sistemes Operatius Marisa Gil 2 FIB Primavera 03 INTRODUCCIÓN Inicio de la sesión K INT SO despierta Poner en marcha el terminal getty ejecuta login comprueba /etc/passwd ejecuta shell al acabar la sesión, se vuelve a la espera Introducció als Sistemes Operatius $ sale el “prompt”: ya se puede trabajar Marisa Gil 3 FIB Primavera 03 INTRODUCCIÓN El intérprete de comandos • Actúa de interlocutor entre el SO y el usuario interpretando los comandos: (dibujo extraído de “An overview of shells”, HP-UX) docum.doc línea de comando comando interpretado shell El usuario teclea el comando print docum.doc Introducció als Sistemes Operatius SO El SO ejecuta el comando El shell interpreta el comando imprimir (“\docum.doc”) Marisa Gil 4 FIB Primavera 03 INTRODUCCIÓN El intérprete de comandos • Actúa de interlocutor entre el SO y el usuario interpretando los comandos: (dibujo extraído de “An overview of shells”, HP-UX) comando interpretado línea de comando ls chap* El usuario teclea el comando Introducció als Sistemes Operatius shell El shell interpreta el comando Marisa Gil lschap1 chap2 chap3 chap4 chap5 SO El SO ejecuta el comando 5 FIB Primavera 03 INTRODUCCIÓN Características del intérprete de comandos • Interactivo • Amigable (iconos lenguaje natural,...) • Informativo > cp usage: cp [-fhip] [--] source_file destination_file or: cp [-fhip] [--] source_file ... destination_directory or: cp [-fhip] [-R | -r] [--] [source_file | source_directory] ... destin • Lenguaje regular (mantener la sintaxis entre comandos) cp [ -fip ] source_file target_file ln [ -fns ] source_file [ target ] Introducció als Sistemes Operatius Marisa Gil 6 FIB Primavera 03 INTRODUCCIÓN Clasificación de comandos • Acceso y manejo de ficheros: edit, print, backup, type, sort, dir, del, cd, ... • Ejecución de programas: run, compiladores, ensambladores, cargadores, ... • Informativos y modificativos de datos de sistema: date, who, show, id, ... • Utilidades (ayudas): mail, talk, write, ... Introducció als Sistemes Operatius Marisa Gil 7 FIB Primavera 03 INTRODUCCIÓN Ejecución de comandos esperar comando comando externo /usr/bin/ls comando interno cd ejecutar comando ejecutar programa esperar ejecutar comando Introducció als Sistemes Operatius Marisa Gil exit 8 FIB Primavera 03 INTRODUCCIÓN El intérprete de comandos en UNIX • Se llama genéricamente shell (recubre el SO como una “cáscara”) • Hay diferentes programas shell en UNIX, que se distinguen en algunas opciones, características, lenguaje de programación que interpretan, etc. • Los más clásicos y conocidos: - sh (Bourne shell) que fue el primero - csh (C shell, porque utiliza un lenguaje muy similar a C) • Otros shells: ksh (Korn shell), zsh (intenta adivinar un comando cuando nos equivocamos en el nombre), bash (Basic shell, de Linux). • Nosotros trabajaremos con tcsh que es una versión de csh. Introducció als Sistemes Operatius Marisa Gil 9 FIB Primavera 03 EL SHELL El tcsh Siempre que se crea un nuevo tcsh se ejecuta el programa .tcshrc (o .cshrc) Para acabar la ejecución de cualquier shell (tcsh, csh, sh, ksh...): exit o ^D Si se trata del inicio de una sesión, además se ejecuta el fichero .login INICIO SESIÓN FIN SESIÓN .login .(t)cshrc logout/exit/^D fin shell Lanzamiento de nuevos shells .(t)cshrc exit/^D ... Introducció als Sistemes Operatius Marisa Gil 10 FIB Primavera 03 INTRODUCCIÓN Variables del shell • Variables de entorno • Tienen nombres conocidos por el sistema • mantienen el control del entorno • se heredan en la sesión >printenv HOME=/home2/users/professors/marisa SHELL=/usr/local/bin/tcsh USER=marisa LOGNAME=marisa PATH=/usr/bin:/usr/local/bin:...:/home2/users/p rofessors/marisa:. ... • Variables locales • Definidas por el usuario • no se heredan >set nombre=mio >set ..... nombre mio ..... >csh $ set nombre=tuyo $ set ... nombre tuyo .... $exit >set ..... nombre mio .... > Introducció als Sistemes Operatius Marisa Gil 11 FIB Primavera 03 EL SHELL Algunas variables de interés • Para personalizar tu propio entorno de trabajo has de tener en cuenta: - Las modificaciones en el fichero .login sólo se ejecutarán en el inicio de sesión - Las modificaciones en el fichero .(t)cshrc se ejecutarán en cada nuevo tcsh - Las modificaciones hechas on-line, se pierden al salir del shell Actualiza tu fichero .cshrc • history • alias: cambia el nombre de algún comando para que te sea más familiar, o acorta la ejecución de comandos con opciones largas • prompt • path: incluye en el path el directorio actual (.) y otros directorios que quieras (por ejemplo, si tienes tu propio directorio bin con los ejecutables que construyas). • Haz otras pruebas con los comandos que quieras. Introducció als Sistemes Operatius Marisa Gil 12