KornShell ( ksh
) es un shell 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. [1] [2] El desarrollo inicial se basó en el código fuente del shell Bourne . [7] Otros de los primeros colaboradores fueron los desarrolladores de Bell Labs Mike Veach y Pat Sullivan, quienes escribieron el código de los modos de edición de línea de Emacs y vi , respectivamente. [8] KornShell es compatible con versiones anteriores del shell Bourne e incluye muchas características del shell C , inspiradas en las solicitudes de los usuarios de Bell Labs.
Autor (es) original (es) | David Korn |
---|---|
Versión inicial | 1983 [1] [2] |
Lanzamiento final | 93u + / 1 de agosto de 2012 |
Versión de vista previa | 93v- / 24 de diciembre de 2014 |
Repositorio | github |
Escrito en | C |
Sistema operativo | Unix y similar a Unix (por ejemplo, Linux y macOS ; también funciona en Windows 10 [3] ) |
Disponible en | inglés |
Tipo | Shell de Unix |
Licencia |
|
Sitio web | www |
Desarrollador (es) | Kurtis Rader, Siteshwar Vashisht, comunidad |
---|---|
Lanzamiento final | 2020/10 de octubre de 2019 |
Repositorio | github |
Predecesor | 93v- |
Desarrollador (es) | Martijn Dekker, comunidad |
---|---|
Repositorio | github |
Predecesor | 93u + |
KornShell, es decir, ksh2020 , [9] una "versión principal por varias razones" [10] (como la eliminación del soporte EBCDIC , soporte eliminado para complementos binarios escritos para ksh93u + y eliminación de algunas funciones matemáticas rotas), fue lanzado por AT&T, pero no se mantiene ni admite (por AT&T ni siquiera estaba en la fecha de lanzamiento).
Diseño
KornShell cumple con POSIX.2 , Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992). Las principales diferencias entre KornShell y el shell Bourne tradicional incluyen:
- control de trabajos , alias de comandos e historial de comandos diseñados a partir de las funciones de shell C correspondientes ; El control de trabajo se agregó al Bourne Shell en 1989 [11]
- una selección de tres estilos de edición de línea de comandos basados en vi , Emacs y Gosling Emacs
- matrices asociativas y operaciones aritméticas de punto flotante incorporadas (solo disponible en el ksh93 versión de KornShell)
- búsqueda dinámica de funciones
- funciones matematicas
- sustitución de procesos y redirección de procesos
- Expresiones similares al lenguaje C
- mejorada orientada a la expresión para y while bucles
- extensibilidad dinámica de los comandos incorporados (cargados dinámicamente) (desde ksh93 )
- variables de referencia
- variables anidadas jerárquicamente
- las variables pueden tener funciones miembro asociadas a ellas
- programación orientada a objetos (desde ksh93t )
- las variables pueden ser objetos con (sub) variables de miembro y métodos de miembro
- Los métodos de objeto se llaman con el nombre de la variable de objeto seguido (después de un carácter de punto) por el nombre del método.
- Se invocan métodos de objetos especiales: inicialización o asignación de objetos, abandono de objetos ( desarmado )
- La composición y agregación está disponible, así como una forma de herencia.
Historia
KornShell fue 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 Eclipse . [4] KornShell está disponible como parte de la colección de software de código abierto AT&T Software Technology (AST). Como KornShell inicialmente solo estaba disponible a través de una licencia propietaria de AT&T, se crearon varias alternativas gratuitas y de código abierto. Éstas 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 los variante ksh88 , a veces con extensiones. ksh93 se mantiene en GitHub . [12]
Como "Desktop KornShell" ( dtksh ), ksh93 se distribuye como parte del Common Desktop Environment . [13] Esta versión también proporciona asignaciones a nivel de shell para los widgets de Motif . Estaba destinado a competir con Tcl / Tk . [14]
El KornShell original, ksh88 , se convirtió en el shell predeterminado en AIX en la versión 4, [15] [16] con ksh93 disponible por separado. [17]
UnixWare 7 incluye ambos ksh88 y ksh93 . El shell Korn predeterminado es ksh93 , que se suministra como / usr / bin / ksh , y la versión anterior está disponible como / usr / bin / ksh88 . [18] UnixWare también incluye dtksh cuando CDE está instalado.
La distribución ksh93 sufrió un destino menos estable después de que los autores dejaron AT&T alrededor de 2012 en la versión estable ksh93u + . Los autores principales continuaron trabajando en una rama ksh93v- beta hasta alrededor de 2014. Ese trabajo finalmente fue asumido principalmente por Red Hat en 2017 (debido a las solicitudes de los clientes) y resultó en el eventual lanzamiento inicial de ksh2020 [19] en el otoño de 2019. Esa versión inicial (aunque solucionó varios problemas de estabilidad anteriores) introdujo algunos problemas menores de rotura y compatibilidad. [20] En marzo de 2020, AT&T decidió revertir los cambios de la comunidad, guardarlos en una sucursal y reiniciar desde ksh93u + , ya que los cambios eran demasiado amplios y estaban demasiado centrados en ksh para que la empresa los absorbiera en un proyecto en modo de mantenimiento. [21] [22] El desarrollo de la corrección de errores continúa en la rama ksh93u + m , basado en la última versión estable de AT&T ( ksh93u + 2012-08-01). [23]
Contribuciones principales a la rama principal de software
Para los propósitos de las listas a continuación, la rama principal de software de KSH se define como el programa original, que data de julio de 1983, hasta el lanzamiento de KSH2020 a finales de 2019. Desarrollo continuo de versiones posteriores (ramas) de KSH se han dividido en diferentes grupos a partir de 2020 y no se detallan a continuación.
contribuyentes individuales principales
Los siguientes se enumeran en un orden cronológico aproximadamente ascendente de sus contribuciones:
- David G. Korn (AT&T Bell Laboratories, AT&T Laboratories y Google; y creador)
- Glenn S. Fowler (AT&T Bell Laboratories, AT&T Laboratories)
- Kiem-Phong Vo (AT&T Bell Laboratories, AT&T Laboratories)
- Adam Edgar (Laboratorios Bell de AT&T)
- Michael T. Veach (Laboratorios Bell de AT&T)
- Patrick D. Sullivan (Laboratorios Bell de AT&T)
- Matthijs N. Melchior (AT&T Network Systems International)
- Karsten-Fleischer (Ingeniería de software Omnium)
- Boyer-Moore
- Siteshwar Vashisht (Red Hat)
- Kurtis Raider
consultor de integración
- Roland Mainz
contribuyentes corporativos principales
Los siguientes se enumeran en un orden cronológico aproximadamente ascendente de sus contribuciones:
- Laboratorios AT&T Bell
- AT&T Network Systems International
- AT&T Laboratories (ahora AT&T Labs)
- Ingeniería de software Omnium
- Oracle Corporation
- sombrero rojo
recursos corporativos donados
Además de las principales corporaciones contribuyentes (enumeradas anteriormente), algunas empresas han contribuido con recursos gratuitos para el desarrollo de KSH. Estos se enumeran a continuación (sin ningún orden en particular).
- GitHub
- Travis CI
- Coverity
Variantes
Hay varios productos de software relacionados con KornShell:
- dtksh - una bifurcación de ksh93 incluido como parte de CDE .
- tksh - un tenedor de ksh93 que proporciona acceso al kit de herramientas del widget Tk .
- oksh : un puerto de la versión de OpenBSD de KornShell, destinado a ser lo más portátil posible [24] en todos los sistemas operativos. Se usó como shell predeterminado en DeLi Linux 7.2.
- mksh : una implementación gratuita del lenguaje KornShell, bifurcada de OpenBSD pdksh . Fue desarrollado originalmente para MirOS BSD y tiene licencia bajo términos permisivos (aunque no de dominio público); específicamente, la Licencia MirOS . [6] Además de su uso en BSD, esta variante ha reemplazado pdksh en Debian, [25] y es el shell predeterminado en Android.
- SKsh : una versión de AmigaOS que proporciona varias características específicas de Amiga, como la interoperabilidad ARexx . [26] En esta tradición, MorphOS usa pdksh en su SDK.
- Shell MKS Korn de MKS Inc. - una implementación propietaria del lenguaje KornShell de Microsoft Windows Services para UNIX (SFU) hasta la versión 2.0; según David Korn, el shell MKS Korn no era totalmente compatible con KornShell en 1998. [27] [28] En SFU versión 3.0, Microsoft reemplazó el shell MKS Korn con un nuevo shell compatible con POSIX.2 como parte de Interix . [29]
- KornShell está incluido en UWIN , un paquete de compatibilidad con Unix de David Korn. [30]
Ver también
- Comparación de carcasas de computadora
- Lista de comandos de Unix
- La programa de prueba
Referencias
- ↑ a b Ron Gomes (9 de junio de 1983). "Programa de la Conferencia de Toronto USENIX (provisional)" . Grupo de noticias : net.usenix . Consultado el 29 de diciembre de 2010 .
- ^ a b Guy Harris (10 de octubre de 1983). "pregunta csh" . Grupo de noticias : net.flame . Consultado el 29 de diciembre de 2010 .
- ^ "Korn Shell Launcher para el subsistema de Windows para Linux« Musings " . blog.fpmurphy.com . Consultado el 29 de enero de 2021 .
- ^ a b "Copia archivada" . Archivado desde el original el 14 de noviembre de 2018 . Consultado el 10 de diciembre de 2018 .CS1 maint: copia archivada como título ( enlace )
- ^ "Copia archivada" . Archivado desde el original el 6 de febrero de 2012 . Consultado el 10 de junio de 2010 .CS1 maint: copia archivada como título ( enlace )
- ^ a b "MirBSD Korn Shell" . Mirbsd.org . Consultado el 10 de diciembre de 2018 .
- ^ Korn, David G. (26 de octubre de 1994), "ksh - An Extensible High Level Language" , Proceedings of the USENIX 1994 Very High Level Languages Symposium , USENIX Association , recuperado el 5 de febrero de 2015 , en
lugar de inventar un nuevo lenguaje de escritura, Creamos un sistema de entrada de formularios modificando el shell Bourne, agregando comandos incorporados según sea necesario.
- ^ Bolsky, Morris I .; Korn, David G. (1989). "Agradecimientos". El lenguaje de programación y comandos KornShell . Englewood Cliffs, Nueva Jersey: Prentice Hall. págs. xii. ISBN 0-13-516972-0.
- ^ "2020.0.0: Versión estable de ksh-2020.0.0" . GitHub . Consultado el 29 de enero de 2021 .
Nota: ksh2020 no se mantiene ni se admite
- ^ "ksh 2020.0.0 CHANGELOG" . GitHub . 2021-01-29.
- ^ "Familia / historia y desarrollo tradicionales de la concha Bourne" . In-ulm.de . Consultado el 10 de diciembre de 2018 .
- ^ "Este es el sitio de descarga de software AT&T Software Technology ast de AT&T Research. La colección de software AT&T AST OpenSource ofrece una descripción general y un software UNIX práctico y reutilizable". Github.com . 10 de diciembre de 2018 . Consultado el 10 de diciembre de 2018 .
- ^ Bill Rosenblatt; Arnold Robbins (2002). Aprendiendo el Korn Shell (2 ed.). O'Reilly Media, Inc. págs. Viii – ix. ISBN 978-0-596-00195-7.
- ^ J. Stephen Pendergrast (1995). Programación gráfica de escritorio KornShell . Addison-Wesley. pag. 359. ISBN 978-0-201-63375-7.
- ^ Casey Cannon; Scott Trent; Carolyn Jones (1999). Simplemente AIX 4.3 . PTR de Prentice Hall. pag. 21. ISBN 978-0-13-021344-0.
- ^ "Centro de conocimiento de IBM" . Ibm.com . Consultado el 10 de diciembre de 2018 .
- ^ "Centro de conocimiento de IBM" . Ibm.com . Consultado el 10 de diciembre de 2018 .
- ^ "Conformidad con UNIX95" . Uw714doc.sco.com . Consultado el 10 de diciembre de 2018 .
- ^ "ksh2020" . GitHub . 26 de febrero de 2021.
- ^ "Registro de cambios de ksh2020" . GitHub . 29 de mayo de 2020.
- ^ "Rebobinando este repositorio y alentando a la comunidad · Número # 1466 · att / ast" . GitHub .
- ^ "segfault con globs extendidos · # 1464 · att / ast" . GitHub .
- ^ "ksh 93u + m " . GitHub .
- ^ "ok en GitHub" . GitHub . 1 de agosto de 2020.
- ^ "Copia archivada" . Archivado desde el original el 28 de julio de 2014 . Consultado el 28 de julio de 2014 .CS1 maint: copia archivada como título ( enlace )
- ^ http://aminet.net/package/util/shell/SKsh21
- ^ "David Korn lo dice todo" . Slashdot . Consultado el 22 de octubre de 2009 .
- ^ "Jerry Feldman - asistente a la conferencia de USENIX NT / LISA NT" . Lists.blu.org . Consultado el 22 de octubre de 2009 .
- ^ "Servicios de Windows para UNIX versión 3.0" . Technet.microsoft.com . Consultado el 22 de octubre de 2009 .
- ^ Anatole Olczak (2001). El shell Korn: manual de programación de Unix y Linux . Addison-Wesley Professional. pag. 4. ISBN 978-0-201-67523-8.
Otras lecturas
- Morris I. Bolsky; David G. Korn (1995). El nuevo lenguaje de programación y comandos de KornShell . PTR de Prentice Hall. ISBN 978-0-13-182700-4.
- David G. Korn, Charles J. Northrup y Jeffery Korn El nuevo KornShell — ksh93 , Linux Journal , número 27, julio de 1996
enlaces externos
- Página de manual de ksh93 en Wayback Machine (archivada el 5 de junio de 2013)
- Página de manual de ksh88 en Wayback Machine (archivada el 5 de noviembre de 2015)
- Shell de dominio público Korn (pdksh) en Wayback Machine (archivado el 21 de octubre de 2016)
- MirBSD Korn Shell (mksh)
- - Manual de comandos generales de MirOS BSD i386