¿Qué es exactamente un caparazón?
El shell le proporciona una forma de comunicarse con el sistema operativo. Esta comunicación puede ser interactiva (entrada de teclado y respuesta inmediata) o mediante script de shell (no interactiva). Básicamente, un script de shell simplemente combina comandos de línea de comandos en un archivo.
El shell es básicamente un intérprete de comandos, similar a command.com en DOS, que recibe comandos del usuario (como ls, etc.) y llama a la aplicación correspondiente. Los shells más comunes son el shell Bourne estándar (sh) y el shell C (csh).
Shells interactivos y no interactivos
El modo interactivo significa que el shell espera tu entrada y ejecuta los comandos que envías. Este modo se llama modo interactivo porque el shell interactúa con el usuario. Este patrón también es muy familiar para la mayoría de los usuarios: iniciar sesión, ejecutar algunos comandos y cerrar sesión. Después de salir, el shell finaliza.
El shell también puede ejecutarse en otro modo: el modo no interactivo. En este modo, el shell no interactúa con usted; sino que lee los comandos almacenados en el archivo y los ejecuta. El shell finaliza cuando la ejecución llega al final del archivo.
Tipos de Shell
Hay dos tipos principales de shells en UNIX
Shell Bourne (incluidos sh, ksh y bash)
Shell Bourne (sh)
Shell Korn (ksh)
Shell Bourne Again (bash). Bourne Again shell (bash)
Shell POSIX (sh)
Shell C (incluidos csh y tcsh)
Shell C (csh)
Shell TENEX/TOPS C (tcsh)
Shell Bourne (shell Bourne)
El shell UNIX original fue desarrollado por Stephen R. Bourne en Nueva Jersey a mediados de la década de 1970. Escrito por AT&T Bell Labs, es el shell Bourne, un intérprete de comandos y un lenguaje de programación de comandos intercambiables. El shell Bourne es un intérprete de comandos y un lenguaje de programación de comandos intercambiables. El shell Byrne puede ejecutarse como un shell de inicio de sesión o como un subshell de un shell de inicio de sesión. En este caso, el shell Bourne primero lee el archivo /etc/profile y el archivo $HOME/.profile. El archivo /etc/profile personaliza el entorno para todos los usuarios y el archivo $HOME/.profile personaliza el entorno para este usuario. Finalmente, el shell esperará para leer su entrada.
C shell
Bill Joy desarrolló el C shell en la Universidad de California, Berkeley, a principios de la década de 1980. El objetivo principal era facilitar a los usuarios el uso de funciones interactivas. para integrar el estilo ALGOL La estructura gramatical se convierte al estilo C. Agrega funciones como historial de comandos, alias, reemplazo de nombres de archivos y control de trabajos.
Korn Shell
Durante mucho tiempo, la gente sólo podía elegir entre dos shells: el shell Bourne para programación y el shell C para interacción. Para cambiar esta situación, David Korn de AT&T Bell Labs desarrolló el shell Korn.
Ksh combina todas las características interactivas del shell C con la sintaxis del shell Bourne. Por lo tanto, el shell Korn es muy popular entre los usuarios. También agrega funciones como cálculos matemáticos, procesamiento colaborativo y edición en línea. Korn Shell es un intérprete de comandos interactivo y un lenguaje de programación de comandos. Cumple con POSIX, el estándar internacional para sistemas operativos. POSIX no es un sistema operativo, sino un estándar cuyo objetivo es lograr la portabilidad de aplicaciones multiplataforma a nivel del programa fuente.
Bourne Again Shell (bash)
bash es parte del proyecto GNU para reemplazar el shell Bourne para sistemas basados en GNU como Linux. La mayoría de Linux (Red Hat, Slackware, Caldera) usan bash como shell predeterminado, y cuando ejecutas sh, en realidad llama a bash.
Shell POSIX
El shell POSIX es una variante del shell Korn. Actualmente, el mayor proveedor de shell POSIX es Hewlett-Packard, y en HP-UX 11.0 el shell POSIX es /bin/sh y bsh es /usr/old/bin/sh.
Shell predeterminado para los principales sistemas operativos:
Shell Korn para AIX.
Solaris y FreeBSD utilizan el shell Bourne de forma predeterminada.
HP-UX utiliza el shell POSIX de forma predeterminada.
Linux utiliza el shell Bourne Again de forma predeterminada.
CONSEJO
#! Uso de /usr/bin/sh
La primera línea de un script de shell suele ser #! /usr/bin/sh o #! /usr/bin/kshetc. Su propósito es indicar en qué shell se escribió el script y qué shell debe usar el sistema para interpretar y ejecutar el script.
Apéndice: Principio del shell del sistema LINUX
El shell del sistema Linux, como shell del sistema operativo, proporciona a los usuarios una interfaz para utilizar el sistema operativo. Es el nombre colectivo del lenguaje de comandos, intérprete de comandos y lenguaje de programación.
El shell es el programa de interfaz entre el usuario y el kernel de Linux. Si imagina el kernel de Linux como el centro de una esfera, entonces el caparazón es la capa exterior que rodea el kernel. Cuando un shell u otro programa pasa un comando a Linux, el kernel reacciona en consecuencia. El shell es un intérprete de lenguaje de comandos con su propio conjunto de comandos de shell integrados. Otras aplicaciones del sistema también pueden llamar al shell. Los comandos escritos por el usuario en el indicador son interpretados por el shell y pasados al kernel de Linux.
Algunos comandos, como cd para cambiar el directorio de trabajo, están incluidos en el shell. Algunos comandos, como el comando copiar cp y el comando mover rm, son programas independientes que existen en los directorios del sistema de archivos. Al usuario no le importa si el comando está integrado dentro del shell o en un programa separado.
El shell primero verifica si el comando es un comando interno y, en caso contrario, verifica si es una aplicación (en este caso, la aplicación puede ser una utilidad de Linux como ls y rm), comprada comercialmente. programas (como xv) o software libre (como emacs)). El shell busca estas aplicaciones en la ruta de búsqueda (una ruta de búsqueda es una lista de directorios donde se pueden encontrar programas ejecutables). Si el comando ingresado no es un comando interno y el ejecutable no se encuentra en la ruta, se muestra un mensaje de error. Si el comando se encuentra correctamente, el comando interno o la aplicación se divide en llamadas al sistema y se pasa al kernel de Linux.
Otra característica importante del shell es que es un lenguaje de programación interpretado que admite la mayoría de los elementos de programa que se encuentran en lenguajes de alto nivel, como funciones, variables, matrices y estructuras de control de programas. Cualquier comando que se pueda escribir en el indicador se puede colocar en un programa de shell ejecutable.
Cuando un usuario normal inicia sesión correctamente, el sistema ejecuta un programa llamado shell. Es el programa shell el que proporciona la línea de comando. Como configuración predeterminada (el shell predeterminado en los sistemas TurboLinux es BASH), "$" se usa como mensaje de usuario normal y "#" se usa como mensaje de superusuario (root).
Cuando aparezca el símbolo del shell, puede escribir el nombre del comando y los parámetros requeridos. Si un comando tarda mucho en ejecutarse o produce muchos resultados en la pantalla, puede interrumpir el comando (detener su ejecución antes de que finalice normalmente) presionando ctrl+c en el teclado para indicar una interrupción.
Cuando el usuario esté listo para finalizar el proceso de diálogo de inicio de sesión, puede escribir un comando de cierre de sesión, un comando de salida o un carácter de fin de archivo (EOF) (presionando Ctrl+d) para finalizar. el inicio de sesión.
Practiquemos cómo funciona el shell.
$ make work
make:*** No existe ninguna regla para habilitar el "trabajo" del objetivo. detener.
$
Nota: make es el nombre de un comando en el sistema, seguido de los parámetros del comando. Después de recibir el comando, el shell lo ejecuta. En este ejemplo, debido a que los parámetros del comando se ingresaron incorrectamente, el sistema devolvió un mensaje para detener la ejecución del comando.
En el ejemplo, el shell busca un programa llamado make y lo ejecuta usando el parámetro work. make es un programa que normalmente se usa para compilar programas grandes que apuntan a argumentos. En el ejemplo de "make work", el objetivo de compilación de make es trabajo. Dado que make no puede encontrar un objetivo llamado trabajo, aparece un mensaje de error indicando que la ejecución falla y el usuario regresa al indicador del sistema.
Además, el shell mostrará un mensaje de error si no puede encontrar un programa con el mismo nombre que el comando que el usuario escribe en la línea de comando. Por ejemplo, si el usuario escribe:
$ myprog
bash:myprog:command not found
$
Como puedes ver , el usuario recibirá un mensaje de error indicando que no se encontró el comando. Este es el mensaje de error que normalmente recibe cuando ingresa el comando incorrecto.