stringtranslate.com

Concha Bourne

El shell Bourne ( sh) es un intérprete de línea de comandos de shell para sistemas operativos de computadora .

El shell Bourne era el shell predeterminado para la versión 7 de Unix . Los sistemas tipo Unix siguen teniendo /bin/sh—que será el shell Bourne, o un enlace simbólico o un enlace duro a un shell compatible— incluso cuando la mayoría de los usuarios utilizan otros shells.

Desarrollado por Stephen Bourne en Bell Labs , fue un reemplazo del shell Thompson , cuyo archivo ejecutable tenía el mismo nombre sh. Fue lanzado en 1979 en la versión 7 de Unix distribuida a colegios y universidades. Aunque se utiliza como un intérprete de comandos interactivo, también fue pensado como un lenguaje de script y contiene la mayoría de las características que comúnmente se consideran para producir programas estructurados.

Ganó popularidad con la publicación de The Unix Programming Environment de Brian Kernighan y Rob Pike , el primer libro publicado comercialmente que presentó el shell como un lenguaje de programación en forma de tutorial.

Historia

Versión 7 de Unix : página del manual original de Bourne Shell . Simulación de PDP-11 con SIMH

Orígenes

El trabajo en el shell Bourne comenzó inicialmente en 1976. [1] Apareciendo por primera vez en la versión 7 de Unix , [2] el shell Bourne fue precedido por el shell Mashey .

Algunos de los objetivos principales del shell eran: [3]

Características de la versión original

Las características del shell Bourne de UNIX versión 7 incluyen:

El shell Bourne también fue el primero en presentar la convención de usar descriptores de archivos 2> para mensajes de error , lo que permitió un control programático mucho mayor durante la creación de scripts al mantener los mensajes de error separados de los datos.

El estilo de codificación de Stephen Bourne estuvo influenciado por su experiencia con el compilador ALGOL 68C [2] en el que había estado trabajando en la Universidad de Cambridge . Además del estilo en el que se escribió el programa, Bourne reutilizó partes de las cláusulas , y " (usando en lugar de ) de ALGOL 68 en la sintaxis común del shell Bourne de Unix . Además, – aunque el shell v7 está escrito en C – Bourne aprovechó algunas macros [4] para darle al código fuente de C un sabor a ALGOL 68. Estas macros (junto con el comando finger distribuido en la versión 4.2BSD de Unix ) inspiraron el Concurso Internacional de Código C Ofuscado (IOCCC). [5]if ~ then ~ elif ~ then ~ else ~ ficase ~ in ~ esacfor/while ~ do ~ oddoneod

Características introducidas después de 1979

Con el paso de los años, AT&T mejoró el shell Bourne. Las distintas variantes reciben el nombre de la versión de Unix de AT&T con la que se lanzó (algunas variantes importantes son Version7, System III, SVR2, SVR3 y SVR4). Como el shell nunca tuvo versiones, la única forma de identificarlo era probando sus características. [6]

Las características de las versiones de Bourne Shell desde 1979 incluyen: [7]

Variantes

Carcasa DMERT

Duplex Multi-Environment Real-Time ( DMERT ) es un sistema operativo híbrido de tiempo compartido/tiempo real desarrollado en la década de 1970 en la sede de Bell Labs en Indian Hill, Naperville, Illinois, que utiliza una instantánea de Bourne Shell de 1978 "VERSION sys137 DATE 1978 Oct 12 22:39:57". [ cita requerida ] El shell DMERT se ejecuta en computadoras 3B21D que aún se utilizan en la industria de las telecomunicaciones. [ cita requerida ]

Cáscara de maíz

Interacción con pdksh en OpenBSD (shell predeterminado)

El shell Korn (ksh), escrito por David Korn basándose en el código fuente original del Bourne Shell, [8] era un camino intermedio entre el Bourne Shell y el C Shell . Su sintaxis se extrajo principalmente del Bourne Shell, mientras que sus características de control de tareas se parecían a las del C Shell. La funcionalidad del Korn Shell original (conocido como ksh88 desde el año de su introducción) se utilizó como base para el estándar de shell POSIX . Una versión más nueva, ksh93, ha sido de código abierto desde 2000 y se utiliza en algunas distribuciones de Linux . Un clon de ksh88 conocido como pdksh es el shell predeterminado en OpenBSD.

Concha de Schily Bourne

Schily-Tools de Jörg Schilling incluye tres derivados de Bourne Shell. [9]

Relación con otras conchas

C-shell (concha C)

Bill Joy , el autor del C shell , criticó al Bourne shell por ser poco amigable para el uso interactivo, [10] una tarea para la cual el propio Stephen Bourne reconoció la superioridad del C shell. Bourne afirmó, sin embargo, que su shell era superior para la creación de scripts y estaba disponible en cualquier sistema Unix, [11] y Tom Christiansen también criticó al C shell por ser inadecuado para la creación de scripts y la programación. [12]

Conchas de Almquist

Debido a problemas de derechos de autor relacionados con Bourne Shell, tal como se utilizó en versiones históricas de CSRG BSD, Kenneth Almquist desarrolló un clon de Bourne Shell, conocido por algunos como Almquist Shell y disponible bajo la licencia BSD , que se utiliza hoy en día en algunos descendientes de BSD y en situaciones de poca memoria. Almquist Shell se trasladó a Linux y el puerto se renombró Debian Almquist Shell o dash. Este shell proporciona una ejecución más rápida de scripts estándar sh(y POSIX-standard sh, en descendientes modernos) con una huella de memoria más pequeña que su contraparte, Bash. Su uso tiende a exponer bashismos : suposiciones centradas en bash realizadas en scripts destinados a ejecutarse en sh.

Otras conchas

Uso

El shell Bourne fue en su día el estándar en todos los sistemas Unix de marca , aunque históricamente los sistemas basados ​​en BSD tenían muchos scripts escritos en csh . Como base de la sintaxis POSIX sh , los scripts del shell Bourne pueden ejecutarse normalmente con Bash o dash en Linux u otros sistemas similares a Unix .

Véase también

Referencias

  1. ^ https://www.bsdcan.org/2015/schedule/events/612.en.html Discurso inaugural de Stephen Bourne en BSDCan 2015
  2. ^ ab McIlroy, MD (1987). Un lector de Unix para investigación: extractos anotados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139. Archivado (PDF) desde el original el 4 de mayo de 2014.
  3. ^ "La A a la Z de los lenguajes de programación: Bourne shell o sh". computerworld.com.au . Archivado desde el original el 11 de enero de 2010 . Consultado el 6 de marzo de 2009 .
  4. ^ Bourne, Steve (12 de enero de 1979). «mac.h – Macros utilizadas por Bourne para estructurar C como Algol68C». AT&T Corporation . Consultado el 9 de septiembre de 2006 .
  5. ^ Landon Curt Noll ; Simon Cooper; Peter Seebach y Leonid A. Broukhis (2004). "Preguntas frecuentes sobre el IOCCC: ¿Cómo se inició el IOCCC?". ioccc.org . Consultado el 9 de septiembre de 2006 .
  6. ^ "¿Qué concha es ésta?" www.in-ulm.de .
  7. ^ "Familia tradicional de conchas Bourne / historia y desarrollo". www.in-ulm.de .
  8. ^ Korn, David G. (26 de octubre de 1994), "ksh - Un lenguaje extensible de alto nivel", Actas del Simposio de lenguajes de muy alto nivel de USENIX de 1994 , USENIX Association , consultado el 5 de febrero de 2015. En lugar de inventar un nuevo lenguaje de script, construimos un sistema de ingreso de formularios modificando el shell Bourne y agregando comandos integrados según fuera necesario.
  9. ^ "Schily Bourne Shell: una fuente de Bourne Shell moderna, mejorada y compatible con POSIX mantenida por Jörg Schilling". Schily-Tools .
  10. ^ Introducción al shell C Archivado el 13 de julio de 2018 en Wayback Machine por Bill Joy . [ página necesaria ]
  11. ^ Bourne, Stephen R. (octubre de 1983). "The Unix Shell". BYTE . p. 187 . Consultado el 30 de enero de 2015 .
  12. ^ Tom Christiansen (28 de septiembre de 1995). «La programación Csh se considera perjudicial» . Consultado el 17 de febrero de 2014 .

Enlaces externos