El intérprete de comandos Almquist (también conocido como A Shell , ash y sh ) es un intérprete de comandos ligero de Unix escrito originalmente por Kenneth Almquist a finales de la década de 1980. Inicialmente un clon de la variante System V.4 del intérprete de comandos Bourne , reemplazó al intérprete de comandos Bourne original en las versiones BSD de Unix lanzadas a principios de la década de 1990.
Historia
ash se publicó por primera vez mediante una entrada en el grupo de noticias Usenet comp.sources.unix , aprobada y moderada por Rich Salz el 30 de mayo de 1989. Se describió como "una reimplementación del intérprete de comandos System V [con] la mayoría de las características de dicho intérprete, además de algunas adiciones". [ 1 ]
Rápido, pequeño y prácticamente compatible con la especificación del intérprete de comandos de Unix del estándar POSIX , ash no ofrecía edición de líneas ni historial de comandos , ya que Almquist consideraba que dicha funcionalidad debía integrarse en el controlador de terminal . Sin embargo, las versiones modernas sí la admiten.
Lo siguiente se extrae de la información del paquete ash de Slackware v14:
ceniza (la concha de ceniza de Kenneth Almquist)
Un intérprete de comandos ligero (92 KB) compatible con Bourne. Ideal para máquinas con poca memoria, pero no ofrece todas las funciones adicionales de intérpretes como bash , tcsh y zsh . Ejecuta la mayoría de los scripts de shell compatibles con Bourne. Cabe destacar que, en Linux , la mayoría de los scripts parecen usar al menos algo de sintaxis específica de bash. Los scripts de configuración de Slackware son una excepción notable, ya que ash es el intérprete de comandos utilizado en los discos de instalación. NetBSD usa ash como su intérprete de comandos /bin/sh.

shSe han producido innumerables bifurcaciones a partir de la versión original de ash. [ 2 ] Estos derivados de ash se instalan como shell predeterminado ( /bin/sh) en FreeBSD , NetBSD , DragonFly BSD , MINIX y en algunas distribuciones de Linux . MINIX 3.2 usó 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 usó ash hasta Android 4.0 , momento en el que cambió a mksh . [ 4 ] Chimera Linux usa la versión de ash de FreeBSD como predeterminada, lo cual es bastante singular en el ámbito de Linux. [ 5 ]
Estrellarse
En 1997, Herbert Xu realizó una migración ashde NetBSD a Debian Linux . En septiembre de 2002, con la versión 0.4.1, esta migración pasó a llamarse Dash ( Debian Almquist shell ). Las principales prioridades de Xu son la conformidad con POSIX y una implementación ligera. [ 2 ]
Al igual que su predecesor, Dash no implementa soporte para internacionalización y localización ni para codificación de caracteres multibyte (ambas requeridas en POSIX). La edición de líneas y el soporte de historial basados en GNU Readline son opcionales ( ).--with-libedit
Adopción en Debian y Ubuntu
Debido a su ligereza, Ubuntu decidió adoptar Dash como predeterminado /bin/sh[ 7 ] [ 8 ] en octubre de 2006 con la versión 6.10. La razón para usar Dash es la ejecución más rápida de scripts de shell , [ 9 ] especialmente durante el arranque 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. [ 10 ]
Como resultado del cambio, se encontraron muchos scripts de shell que utilizaban funcionalidades específicas de Bash ("bashismos") sin declararlas correctamente en la línea shebang . [ 11 ] [ 12 ] El problema se detectó por primera vez en Ubuntu y los mantenedores decidieron hacer que todos los scripts cumplieran con el estándar POSIX . Los cambios se incorporaron posteriormente a Debian, que finalmente adoptó Dash como su predeterminado /bin/shtambién en Debian 6 (Squeeze), lanzado en febrero de 2011. [ 7 ] Como resultado, la política de Debian se modificó para permitir que los desarrolladores de scripts asumieran un shell en gran medida compatible con POSIX, salvo las extensiones fusionadas en Dash por conveniencia ( local, echo -n, test -a / -o). [ 13 ] [ 14 ] Una transición similar ha ocurrido en Slackware Linux, aunque su versión de ashse basa solo parcialmente en Dash. [ 2 ]
Linux embebido
Ash (principalmente la bifurcación 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 genérico que se suele utilizar en este ámbito. Las versiones modernas de BusyBox admiten funciones adicionales de Bash que están habilitadas en distribuciones modernas como Alpine Linux , Tiny Core Linux y firmware de enrutadores basado en Linux como OpenWrt , Tomato y DD-WRT .
Véase también
Referencias
- ↑ 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.
- 1 2 3 Mascheck, Sven. "Variantes de Ash (Almquist Shell)" . www.in-ulm.de .
- ↑ Thomas E. Dickey (2015). "PRUEBA versus Portabilidad" . Recuperado el 1 de marzo de 2020 .
- ↑ Elliott Hughes (2018-06-20). "Android's shell and utilities" . Recuperado el 29 de febrero de 2020 .
- ↑ https://github.com/chimera-linux/chimerautils/blob/master/src.freebsd/sh/TOUR
- ↑ Xu, Herbert. "COPIANDO" . Archivos del núcleo de Linux . Consultado el 23 de diciembre de 2023 .
- 1 2 "Shell no interactivo" . Wiki de Debian . 13 de enero de 2020. Consultado el 29 de febrero de 2020 .
- ↑ "Dash como /bin/sh" . Ubuntu Wiki . 16 de diciembre de 2017. Consultado el 29 de febrero de 2020 .
- ↑ Neal Krawetz (2011). Ubuntu: Potentes trucos y personalizaciones . John Wiley & Sons . pág. 178. ISBN 9781118080382.
- ↑ Christopher Negus; Francois Caen (2011). Ubuntu Linux Toolbox . John Wiley & Sons. pág. 49. ISBN 9781118079140.
- ↑ Egil Hasting (2006-09-20). "Los scripts que usan bash podrían dejar de funcionar con el nuevo enlace simbólico" . Launchpad . Consultado el 29 de febrero de 2020 .
- ↑ comotion (21/09/2007). "El uso de dash como #!/bin/sh introduce innumerables incompatibilidades" . Launchpad . Consultado el 29/02/2020 .
- ↑ "10. Archivos" . Manual de políticas de Debian v4.5.0.2 .
- ↑ – Manual de comandos generales de Linux de ManKier.com
Enlaces externos
- shells de Unix
- Software de 1989
- Software multiplataforma
- Lenguajes de scripting
- Lenguajes de programación orientados a texto