¿Qué es el Bourne Shell?
El Bourne Shell es un pequeño programa que se ejecuta en sistemas operativos de Unix® y Linux® y proporciona una interfaz para ejecutar programas en el sistema. A menudo se le conoce como una interfaz de línea de comando, o intérprete de comando, ya que no proporciona una interfaz gráfica de usuario (GUI) al usuario. Los comandos, y cualquier parámetro necesario, que se ejecutará se escriben en el shell. Bourne Shell también es un lenguaje de secuencias de comandos, lo que permite a los usuarios crear y ejecutar archivos de script que pueden procesar datos a través de múltiples programas a través de un solo comando. En los sistemas tipo unix®, el programa se conoce simplemente como "sh".
Los primeros shells para sistemas Unix® se conocían como Thompson Shell, creado por Ken Thompson, uno de los creadores originales del sistema operativo Unix®. Thompson Shell se limitó a la interpretación del comando, y varias funciones adicionales tuvieron que ser ejecutadas como operaciones externas. Más tarde, Stephen Bourne creó el Bourne Shell para reemplazar el ThompsonShell, agregando una serie de nuevas características en el shell, así como el lenguaje de secuencias de la shell.
En realidad, el Bourne Shell fue planeado como un lenguaje de secuencias de comandos desde el primer momento. Si bien todavía era la interfaz de línea de comandos para la versión siete de Unix®, también abrió la posibilidad de que los usuarios desarrollen scripts de shell que vinculen los comandos para procesar datos. Mediante el uso de esta programación, el usuario podría establecer variables para capturar datos conocidos o desconocidos de la entrada o salida y manipular el procesamiento de esos datos mediante el uso de declaraciones condicionales en el script a través de una técnica denominada flujo de control.
Este fue también el primer shell en implementar una característica conocida como manejo de señales. A través de Bourne Shell, un usuario puede enviar un tipo específico de señal a un proceso que ya se ejecuta en la computadora, instruyendo a ese proceso para hacer SOMthithing más. Muchas de estas son formas de detener un proceso que se está ejecutando y produce algún tipo de salida que se pueda usar para la depuración, aunque otros existen para detener temporalmente un proceso, reanudar, etc.
La capacidad de controlar directamente los descriptores de archivos fue otro primero para el Bourne Shell. En un sistema similar a unix®, cada programa en ejecución tiene una tabla que enumera los descriptores de archivos para cualquier archivo abierto. Esto puede incluir cualquier cosa, desde un archivo de texto simple hasta un directorio o incluso los sockets de comunicación que los procesan para compartir datos entre sí. Para que un usuario tenga control sobre los descriptores de archivo en un sistema permitido para un control sin precedentes sobre la entrada y la salida para prácticamente todo en la computadora.
Por supuesto, a pesar de que Bourne Shell ofreció una funcionalidad adicional a los usuarios, carecía de características como la capacidad de controlar los procesos de manera interactiva, establecer alias de comando y retener un historial. Más tarde, sin embargo, varios desciendenLas hormigas comenzaron a surgir que tomaron las características de conchas más útiles que se habían ideado a lo largo de los años y las enrollaron en nuevos proyectiles. Un ejemplo común es el shell de Bourne-Again, o Bash, que es común en muchos sistemas Linux®. Como resultado, muchos de estos descendientes son totalmente capaces de ejecutar scripts regulares de Bourne Shell, dando a cada sistema de Unix® alguna implementación del shell original de Bourne de una forma u otra. En muchos sistemas Linux®, este es simplemente un enlace de "sh" a "Bash" o algún otro descendiente capaz.