KornShell
KornShell (ksh
) es un shell de Unix que fue desarrollado por David Korn en Bell Labs a principios de la década de 1980 y anunciado en USENIX el 14 de julio de 1983. El desarrollo inicial se basó en el código fuente de Bourne Shell. Otros de los primeros colaboradores fueron los desarrolladores de Bell Labs, Mike Veach y Pat Sullivan, quienes escribieron Emacs y los modos de edición de líneas al estilo vi. código, respectivamente. KornShell es compatible con versiones anteriores del shell Bourne e incluye muchas funciones del shell C, inspiradas en las solicitudes de los usuarios de Bell Labs.
Características
KornShell cumple con POSIX.2, Shell and Utilities, intérprete de comandos (IEEE Std 1003.2-1992). Las principales diferencias entre KornShell y el shell Bourne tradicional incluyen:
- control de empleo, aliado de comandos e historia de comandos diseñados después de las características correspondientes de la cáscara C; el control de trabajo se añadió al Bourne Shell en 1989
- una selección de tres estilos de edición de línea de comando basado en vi, Emacs y Gosling Emacs
- matrizs asociativas y operaciones aritméticas de punto flotante integradas (sólo disponible en las ksh93 versión de KornShell)
- búsqueda dinámica de funciones
- funciones matemáticas
- sustitución y redirección de procesos
- Expresiones similares al lenguaje C
- mejor orientado a la expresión para y mientras bucles
- extensibilidad dinámica de comandos integrados (dinamicamente cargados) (desde entonces ksh93)
- variables de referencia
- variables jerárquicas anidadas
- variables pueden tener funciones asociadas con ellos
- objetividad orientada-programación (desde ksh93t)
- variables pueden ser objetos con miembros (sub-)variables y métodos miembros
- los métodos de objeto se llaman con el nombre variable objeto seguido (después de un carácter de punto) por el nombre del método
- métodos especiales de objeto son llamados a: inicialización de objetos o asignación, abandono de objetos (unset)
- composición y agregación está disponible, así como una forma de herencia
Historia
KornShell era originalmente un software propietario. En 2000, el código fuente se publicó bajo una licencia particular de AT&T, pero desde el lanzamiento de ksh93q a principios de 2005, ha sido licenciado bajo la Licencia Pública de Eclipse. KornShell está disponible como parte de la colección de software de código abierto de AT&T Software Technology (AST). Como KornShell inicialmente solo estaba disponible a través de una licencia patentada de AT&T, se crearon varias alternativas gratuitas y de código abierto. Estos incluyen pdksh, mksh, bash y zsh.
La funcionalidad del KornShell original, ksh88, se utilizó como base para el intérprete de comandos estándar POSIX.2, Shell and Utilities (IEEE Std 1003.2-1992).
Algunos proveedores todavía envían sus propias versiones de la variante anterior ksh88, a veces con extensiones. ksh93 se mantiene en GitHub.
Como "KornShell de escritorio" (dtksh), ksh93 se distribuye como parte de Common Desktop Environment. Esta versión también proporciona asignaciones a nivel de shell para widgets de Motif. Fue pensado como un competidor de Tcl/Tk.
El KornShell original, ksh88, se convirtió en el shell predeterminado en AIX en la versión 4, con ksh93 disponible por separado.
UnixWare 7 incluye tanto ksh88 como ksh93. El shell de Korn predeterminado es ksh93, que se proporciona como /usr/bin/ksh, y la versión anterior está disponible como /usr/bin/ksh88. UnixWare también incluye dtksh cuando se instala CDE.
La distribución ksh93 sufrió un destino menos estable después de que los autores dejaran AT&T alrededor de 2012 con la versión estable ksh93u+. Los autores principales continuaron trabajando en una rama beta de ksh93v- hasta alrededor de 2014. Eventualmente, Red Hat asumió ese trabajo principalmente en 2017 (debido a las solicitudes de los clientes) y resultó en el lanzamiento inicial final de ksh2020 en el otoño de 2019. Ese lanzamiento inicial (aunque solucionó varios problemas de estabilidad anteriores) introdujo algunos problemas menores de rotura y compatibilidad. En marzo de 2020, AT&T decidió revertir los cambios de la comunidad, ocultarlos en una sucursal y reiniciar desde ksh93u+, ya que los cambios eran demasiado amplios y demasiado centrados en ksh para que la empresa los absorbiera. un proyecto en modo mantenimiento. El desarrollo de corrección de errores continúa en la rama ksh93u+m, según la última versión estable de AT&T (ksh93u+ 2012-08-01). ksh2020 se lanzó como "lanzamiento principal por varias razones" como la eliminación de la compatibilidad con EBCDIC, la eliminación de la compatibilidad con complementos binarios escritos para ksh93u+ y la eliminación de algunas funciones matemáticas rotas, fue lanzado por AT&T, pero nunca ha sido mantenido o respaldado por ellos (ni siquiera en su fecha de lanzamiento inicial).
Principales contribuciones a la rama principal de software
Para los propósitos de las listas a continuación, la rama de software principal de KSH se define como el programa original, que data de julio de 1983, hasta el lanzamiento de KSH2020 a fines de 2019. El desarrollo continuo de versiones de seguimiento (ramas) de KSH se ha dividido en diferentes grupos a partir de 2020 y no se detalla a continuación.
Contribuyentes individuales primarias
(feminine)Los siguientes se enumeran en un orden cronológico aproximadamente ascendente de sus contribuciones:
- David G. Korn (AT plagaT Bell Laboratories, AT plagaT Laboratories y Google; y creador)
- Glenn S. Fowler (AT plagaT Bell Laboratories, AT plagaT Laboratories)
- Kiem-Phong Vo (AT plagaT Bell Laboratories, AT plagaT Laboratories)
- Adam Edgar (AT limitadaT Bell Laboratories)
- Michael T. Veach (AT implicaT Bell Laboratories)
- Patrick D. Sullivan (AT plagaT Bell Laboratories)
- Matthijs N. Melchior (AT plagaT Network Systems International)
- Karsten-Fleischer (Omnium Software Engineering)
- Boyer-Moore
- Siteshwar Vashisht (Red Hat)
- Kurtis Raider
Consultora de integración
(feminine)- Roland Mainz
Principales contribuyentes corporativos
Los siguientes se enumeran en un orden cronológico aproximadamente ascendente de sus contribuciones:
- Laboratorios de Bell
- AT flexible Network Systems International
- Laboratorios ATT (actualmente Laboratorios ATT)
- Omnium Software Engineering
- Oracle Corporation
- Red Hat
Recursos corporativos donados
Además de las principales corporaciones contribuyentes principales (enumeradas anteriormente), algunas empresas han contribuido con recursos gratuitos para el desarrollo de KSH. Estos se enumeran a continuación (ordenados alfabéticamente):
- Cobertura
- GitHub
- Travis CI
Variantes
Hay varias bifurcaciones y clones de KornShell:
- Dtksh– un tenedor ksh93 incluido como parte del CDE.
- Tksh– un tenedor ksh93 que proporciona acceso al widget de Tk toolkit.
- Ok.– un puerto de la variante de OpenBSD de KornShell, destinado a ser máximamente portátil a través de sistemas operativos. Fue utilizado como la shell predeterminada en DeLi Linux 7.2.
- Loksh– un puerto Linux de la variante de OpenBSD de KornShell, con mínimos cambios.
- mksh– una aplicación gratuita del idioma KornShell, predicho desde OpenBSD pdksh. Fue desarrollado originalmente para MirOS BSD y está licenciado bajo términos permisivos (aunque no de dominio público); específicamente, la Licencia MirOS. Además de su uso en BSD, esta variante ha reemplazado pdksh en Debian, y es la shell predeterminada en Android.
- SKsh– una variante AmigaOS que proporciona varias características específicas de Amiga, como la interoperabilidad de ARexx. En esta tradición MorphOS utiliza pdksh en su SDK.
- MKS Inc.'s MKS Korn shell – una aplicación patentada del idioma KornShell de Microsoft Windows Services para UNIX (SFU) hasta la versión 2.0; según David Korn, la cáscara MKS Korn no era totalmente compatible con KornShell en 1998. En la versión 3.0 de SFU Microsoft sustituyó la cáscara MKS Korn con una nueva cáscara compatible con POSIX.2 como parte de Interix.
- KornShell está incluido en UWIN, un paquete de compatibilidad Unix de David Korn.
Contenido relacionado
Bill Gates
Cambio aritmético
José Weizenbaum