Desarrollador(es) | Kenneth Almquist |
---|---|
Lanzamiento inicial | 30 de mayo de 1989 ( 30-05-1989 ) |
Escrito en | do |
Sistema operativo | Similar a Unix |
Plataforma | Multiplataforma |
Tipo | Concha de Unix |
Sitio web | www.in-ulm.de/~mascheck/various/ash/ |
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.
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]
Desarrollador(es) | Herbert Xu |
---|---|
Lanzamiento inicial | 15 de julio de 1997 ( 15 de julio de 1997 ) |
Versión estable | 0.5.12 / 11 de diciembre de 2022 ( 11/12/2022 ) |
Repositorio | git.kernel.org/pub/scm/utils/dash/dash.git |
Escrito en | do |
Sistema operativo | Linux , Android |
Tipo | Concha de Unix |
Licencia | Licencia BSD de 3 cláusulas con mksignames bajo GNU GPL [5] |
Sitio web | gondor.apana.org.au/~herbert/dash/ |
En 1997, Herbert Xu portó ash
NetBSD 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
).
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/sh
en 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/sh
en 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/sh
tambié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 ash
solo se basa parcialmente en Dash. [2]
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".