KornShellGenericName
KornShell (ksh
) é um shell Unix desenvolvido por David Korn no Bell Labs no início dos anos 80 e anunciado no USENIX em 14 de julho de 1983. O desenvolvimento inicial foi baseado no código-fonte do shell Bourne. Outros contribuidores iniciais foram os desenvolvedores do Bell Labs, Mike Veach e Pat Sullivan, que escreveram os modos de edição de linha Emacs e vi-style; código, respectivamente. O KornShell é compatível com versões anteriores do shell Bourne e inclui muitos recursos do shell C, inspirados nas solicitações dos usuários do Bell Labs.
Recursos
KornShell está em conformidade com POSIX.2, Shell e utilitários, interpretador de comandos (IEEE Std 1003.2-1992). As principais diferenças entre o KornShell e o shell Bourne tradicional incluem:
- controle de trabalho, aliasing de comando e histórico de comando projetado após as características correspondentes do shell C; controle de trabalho foi adicionado ao Bourne Shell em 1989
- uma escolha de três estilos de edição de linha de comando baseados em vi, Emacs e Gosling Emacs
- arrays associativos e operações aritméticas em ponto flutuante (apenas disponíveis na ksh93 versão de KornShell)
- busca dinâmica de funções
- funções matemáticas
- substituição do processo e redirecionamento do processo
- expressões semelhantes a C
- orientada para a expressão para e enquanto loops
- extensibilidade dinâmica de comandos (dinamicamente carregados) incorporados (desde ksh93)
- variáveis de referência
- variáveis hierarquicamente aninhadas
- variáveis podem ter funções associadas a elas
- projeto orientado a objetos (desde - Não.)
- variáveis podem ser objetos com membros (sub-)variáveis e métodos membros
- métodos de objeto são chamados com o nome da variável objeto seguido (depois de um caractere do ponto) pelo nome do método
- métodos de objetos especiais são chamados: inicialização de objetos ou atribuição, abandono de objetos (Não.)
- composição e agregação está disponível, bem como uma forma de herança
História
O KornShell era originalmente um software proprietário. Em 2000, o código-fonte foi lançado sob uma licença específica da AT&T, mas desde o lançamento do ksh93q no início de 2005, ele foi licenciado sob a Eclipse Public License. O KornShell está disponível como parte da coleção de software de código aberto da AT&T Software Technology (AST). Como o KornShell estava inicialmente disponível apenas por meio de uma licença proprietária da AT&T, várias alternativas gratuitas e de código aberto foram criadas. Isso inclui pdksh, mksh, bash e zsh.
A funcionalidade do KornShell original, ksh88, foi usada como base para o padrão POSIX.2, Shell e utilitários, interpretador de comandos (IEEE Std 1003.2-1992.)
Alguns fornecedores ainda enviam suas próprias versões da variante ksh88 mais antiga, às vezes com extensões. ksh93 é mantido no GitHub.
Como "Desktop KornShell" (dtksh), ksh93 é distribuído como parte do Common Desktop Environment. Esta versão também fornece mapeamentos em nível de shell para widgets Motif. Foi concebido como um concorrente do Tcl/Tk.
O KornShell original, ksh88, tornou-se o shell padrão no AIX na versão 4, com o ksh93 disponível separadamente.
UnixWare 7 inclui ksh88 e ksh93. O shell Korn padrão é ksh93, que é fornecido como /usr/bin/ksh, e a versão mais antiga está disponível como /usr/bin/ksh88. O UnixWare também inclui dtksh quando o CDE é instalado.
A distribuição ksh93 passou por um destino menos estável depois que os autores deixaram a AT&T por volta de 2012 na versão estável ksh93u+. Os autores principais continuaram trabalhando em uma ramificação beta ksh93v- até por volta de 2014. Esse trabalho acabou sendo assumido principalmente pela Red Hat em 2017 (devido a solicitações de clientes) e resultou no eventual lançamento inicial de ksh2020 no outono de 2019. Essa versão inicial (apesar de corrigir vários problemas anteriores de estabilidade) introduziu alguns problemas menores de quebra e compatibilidade. Em março de 2020, a AT&T decidiu reverter as alterações da comunidade, armazená-las em uma ramificação e reiniciar a partir de ksh93u+, pois as alterações eram muito amplas e muito focadas em ksh para a empresa absorver em um projeto em modo de manutenção. O desenvolvimento da correção de bugs continua na ramificação ksh93u+m, com base na última versão AT&T estável (ksh93u+ 2012-08-01). ksh2020 foi lançado como um "grande lançamento por vários motivos" como a remoção do suporte EBCDIC, abandono do suporte para plug-ins binários escritos para ksh93u+ e remoção de algumas funções matemáticas quebradas, foi lançado pela AT&T, mas nunca foi mantido ou suportado por eles (nem mesmo em sua data de lançamento inicial).
Contribuições primárias para o ramo de software principal
Para efeitos das listas abaixo, o principal ramo de software do KSH é definido como o programa original, datado de julho de 1983, até o lançamento de KSH2020 no final de 2019. O desenvolvimento contínuo de versões subsequentes (ramificações) do KSH foi dividido em diferentes grupos a partir de 2020 e não é detalhado abaixo.
Principais colaboradores individuais
Os seguintes estão listados em ordem cronológica aproximadamente crescente de suas contribuições:
- David G. Korn (AT&T Bell Laboratories, AT&T Laboratories e Google; e criador)
- Glenn S. Fowler (AT&T Bell Laboratories, AT&T Laboratories)
- Kiem-Phong Vo (AT&T Bell Laboratories, AT&T Laboratories)
- Adam Edgar (AT&T Bell Laboratories)
- Michael T. Veach (AT&T Bell Laboratories)
- Patrick D. Sullivan (AT&T Bell Laboratories)
- Matthijs N. Melchior (AT&T Network Systems International)
- Karsten-Fleischer (Engenharia de Software de Omnium)
- Boyer-Moore
- Siteshwar Vashisht (Chapéu vermelho)
- Kurtis Raider
Consultor de integração
- Roland Mainz
Principais colaboradores corporativos
Os seguintes estão listados em ordem cronológica aproximadamente crescente de suas contribuições:
- AT&T Bell Laboratories
- AT&T Network Systems International
- AT&T Laboratories (agora AT&T Labs)
- Engenharia de Software Omnium
- Oracle Corporation
- Google - Serviço técnico para computadores
- Chapéu vermelho
Recursos corporativos doados
Além das principais corporações contribuintes (listadas acima), algumas empresas contribuíram com recursos gratuitos para o desenvolvimento do KSH. Estes estão listados abaixo (em ordem alfabética):
- Cobertura
- GitHub
- IC de Travis
Variantes
Existem vários forks e clones do KornShell:
- Dtksh– um garfo de ksh93 incluído como parte do CDE.
- Tksh– um garfo de ksh93 que fornece acesso ao kit de ferramentas widget Tk.
- Está bem.– uma porta da variante do OpenBSD de KornShell, destinada a ser maximamente portátil em sistemas operacionais. Ele foi usado como o shell padrão no DeLi Linux 7.2.
- Meu Deus!– uma porta Linux da variante do OpenBSD de KornShell, com mudanças mínimas.
- Mksh– uma implementação gratuita da linguagem KornShell, falsificada do OpenBSD Pdksh. Ele foi originalmente desenvolvido para MirOS BSD e é licenciado sob termos permissivos (embora não de domínio público), especificamente, a Licença MirOS. Além de seu uso em BSD, esta variante substituiu Pdksh no Debian, e é o shell padrão no Android.
- SKH– uma variante AmigaOS que fornece várias características específicas de Amiga, tais como interoperabilidade ARexx. Nesta tradição MorphOS usa Pdksh no SDK.
- MKS Inc.'s MKS Korn shell – uma implementação proprietária da linguagem KornShell da Microsoft Windows Services para UNIX (SFU) até a versão 2.0; de acordo com David Korn, o MKS Korn shell não foi totalmente compatível com KornShell em 1998. Na versão 3.0 da SFU a Microsoft substituiu o MKS Korn shell com um novo POSIX.2-compliant shell como parte do Interix.
- KornShell está incluído no UWIN, um pacote de compatibilidade Unix por David Korn.
- /bin/sh no sistema Doug Gwyn (US Army BRL) O pacote V on BSD incluiu a versão de Ron Natalie do SVR2 /bin/sh que tinha controle de trabalho e edição de linha de comando. Este foi um contemporâneo do ksh original em um momento em que não tinha escapado AT&T. Este foi posteriormente o /bin/sh que enviou com todos os sistemas derivados CMU Mach.
Contenido relacionado
Firewire (desambiguação)
Relógio
Blitz BÁSICO