stringtranslate.com

Concha de Almquist

Almquist shell (también conocido como A Shell , ash y sh ) es un shell Unix ligero escrito originalmente por Kenneth Almquist a fines de la década de 1980. Inicialmente un clon de la variante System V.4 del shell Bourne , reemplazó al shell Bourne original en las versiones BSD de Unix lanzadas a principios de la década de 1990.

Historia

ash fue lanzado por primera vez a través de una publicación en el grupo de noticias de Usenet comp.sources.unix , aprobado y moderado por Rich Salz el 30 de mayo de 1989. Fue descrito como "una reimplementación del shell System V [con] la mayoría de las características de ese shell, más algunas adiciones". [1]

Rápido, pequeño y prácticamente compatible [ cita requerida ] con la especificación del estándar POSIX del shell de Unix, ash no proporcionaba mecanismos de edición de línea o historial de comandos , porque Almquist consideró que dicha funcionalidad debería trasladarse al controlador de terminal . Sin embargo, las variantes actuales lo admiten.

Lo siguiente se extrae de la información del paquete ash de Slackware v14:

Fresno (concha de fresno de Kenneth Almquist)

Un shell ligero (92K) compatible con Bourne. Ideal para máquinas con poca memoria, pero no ofrece todos los extras de shells como bash , tcsh y zsh . Ejecuta la mayoría de los scripts de shell compatibles con el shell Bourne. Tenga en cuenta que en Linux , la mayoría de los scripts parecen utilizar al menos alguna sintaxis específica de bash. Los scripts de configuración de Slackware son una excepción notable, ya que ash es el shell utilizado en los discos de instalación. NetBSD utiliza ash como su /bin/sh.

Se han producido innumerables bifurcaciones a partir de la versión original de ash. [2] Estos derivados de ash se instalan como el shell predeterminado ( /bin/sh) en FreeBSD , NetBSD , DragonFly BSD , MINIX y en algunas distribuciones de Linux . MINIX 3.2 utilizó la versión original de ash, cuya función de prueba difería de POSIX. [3] Esa versión del shell fue reemplazada en MINIX 3.3. Android utilizó ash hasta Android 4.0 , momento en el que cambió a mksh . [4]

Estrellarse

En 1997, Herbert Xu portó ashNetBSD a Debian Linux . En septiembre de 2002, con la versión 0.4.1, este puerto pasó a llamarse Dash ( Debian Almquist shell ). Las principales prioridades de Xu son la conformidad con POSIX y una implementación simplificada. [2]

Al igual que su predecesor, Dash no implementa soporte para internacionalización y localización ni codificación de caracteres multibyte (ambos requeridos en POSIX). [ cita requerida ] La edición de línea y el soporte de historial basado en GNU Readline son opcionales ( --with-libedit).

Adopción en Debian y Ubuntu

Debido a su delgadez, Ubuntu decidió adoptar Dash como el shell predeterminado /bin/sh[6] [7] en 2006. La razón para usar Dash es la ejecución más rápida de scripts de shell , [8] especialmente durante el inicio del sistema operativo, en comparación con versiones anteriores de Debian y Ubuntu que usaban Bash para este propósito, aunque Bash sigue siendo el shell de inicio de sesión predeterminado para uso interactivo. [9] Dash se convirtió en el predeterminado /bin/shen Ubuntu a partir del lanzamiento de la versión 6.10 en octubre de 2006. [7] Dash reemplazó a Bash y se convirtió en el predeterminado /bin/shen Debian 6 (Squeeze), lanzado en febrero de 2011. [6]

Un resultado de este cambio es que se encontraron muchos scripts de shell que hacían uso de funcionalidades específicas de Bash ("bashisms") sin declararlas correctamente en la línea shebang . [10] [11] El problema se detectó primero en Ubuntu y los mantenedores de Ubuntu decidieron hacer que todos los scripts cumplieran con el estándar POSIX . Los cambios se trasladaron más tarde a Debian, que finalmente adoptó Dash /bin/shtambién como su valor predeterminado. Como resultado, la política de Debian se modificó para permitir a los desarrolladores de scripts asumir un shell en gran medida compatible con POSIX, salvo las extensiones fusionadas en Dash por conveniencia ( local, echo -n, test -a / -o). [12] [13] Una transición similar ha ocurrido en Slackware Linux, aunque su versión de ashsolo se basa parcialmente en Dash. [2]

Linux integrado

Ash (principalmente la bifurcación de Dash) también es bastante popular en sistemas Linux embebidos . La versión 0.3.8-5 de Dash se incorporó a BusyBox , el ejecutable general que se emplea a menudo en esta área, y se utiliza en distribuciones como DSLinux, Alpine Linux , Tiny Core Linux y firmware de enrutador basado en Linux como OpenWrt , Tomato y DD-WRT . Muchos proveedores de sistemas comerciales también lo incluyen, porque no es GPL -Ware, pero tiene una licencia que lo permite; por ejemplo, en los Sophos XG se lo llama engañosamente "Advanced Shell".

Véase también

Referencias

  1. ^ Almquist, Kenneth (30 de mayo de 1989). Rich Salz (ed.). "v19i001: Una reimplementación del shell System V, Parte 01/08". Grupo de noticias de Usenet , comp.sources.unix.
  2. ^ abcMascheck, Sven. "Variantes de Ash (Almquist Shell)". www.in-ulm.de .
  3. ^ Thomas E. Dickey (2015). «TEST versus Portability» . Consultado el 1 de marzo de 2020 .
  4. ^ Elliott Hughes (20 de junio de 2018). "El shell y las utilidades de Android" . Consultado el 29 de febrero de 2020 .
  5. ^ Xu, Herbert. "COPIANDO". Archivos del núcleo de Linux . Consultado el 23 de diciembre de 2023 .
  6. ^ ab "Shell no interactivo". Wiki de Debian . 13 de enero de 2020. Consultado el 29 de febrero de 2020 .
  7. ^ ab "Dash como /bin/sh". Wiki de Ubuntu . 2017-12-16 . Consultado el 2020-02-29 .
  8. ^ Neal Krawetz (2011). Ubuntu: potentes trucos y personalizaciones. John Wiley & Sons . pág. 178. ISBN 9781118080382.
  9. ^ Christopher Negus; Francois Caen (2011). Caja de herramientas de Ubuntu Linux. John Wiley & Sons. pág. 49. ISBN 9781118079140.
  10. ^ Egil Hasting (2006-09-20). "Los scripts que usan bash podrían fallar con el nuevo enlace simbólico". Launchpad . Consultado el 29 de febrero de 2020 .
  11. ^ comotion (2007-09-21). "El uso de dash como #!/bin/sh genera incontables incompatibilidades". Launchpad . Consultado el 29 de febrero de 2020 .
  12. ^ "10. Archivos". Manual de políticas de Debian v4.5.0.2 .
  13. ^ checkbashisms(1)  –  Manual de comandos generales de Linux

Enlaces externos