Shell unix
Um shell Unix é o termo usado em computação para se referir ao interpretador de comandos de sistemas operacionais baseados em Unix e similares , como GNU/Linux , e que é sua interface de usuário tradicional . Por meio das instruções fornecidas pelo intérprete, o usuário pode comunicar-se com o kernel e, por extensão, executar ditas ordens, bem como ferramentas que lhe permitem controlar o funcionamento do computador. Por esta razão, em inglês foi chamado dessa forma, shell , que pode ser traduzido como "shell", pois é o shell visível do sistema computacional.
Os comandos fornecidos pelos interpretadores podem ser usados como script se forem escritos em arquivos executáveis chamados shell-scripts, desta forma, quando o usuário precisar utilizar vários comandos ou comandos combinados com ferramentas, escreva em um arquivo texto, marcado como executável, as operações que depois, linha por linha, o interpretador traduzirá para o kernel para que possa realizá-las. Sem ser um script de shell estritamente uma linguagem de programação, o processo de criação de scripts de shell é chamado de programação de shell ou em inglês, programação de shell ou script de shell .
No sentido mais genérico do termo, shell significa qualquer interpretador que os usuários usam para digitar comandos. Sua etimologia vem do uso natural de consoles em computadores rodando em Unix no passado, quando os usuários se conectavam ao computador central, o faziam por meio de consoles (shells) pelos quais, por meio de um interpretador, faziam login e gerenciavam o computador principal. Mais tarde, com a proliferação dos computadores pessoais e sua filosofia de usuário único, um computador por usuário (entendida como o oposto da filosofia inicial do Unix, um computador, muitos usuários conectados por terminais), foi desenvolvido um software que emulava as principais características de consoles físicos, para que eles ainda pudessem ser usados como clientes em um computador ou kernel que entendesse a convenção padrão usada para configurar e executar tarefas de gerenciamento de emergência com servidores baseados em Unix.
Unix e usuários semelhantes podem escolher entre diferentes shells (programa que deve ser executado quando eles efetuarem login, veja bash , ash , csh , Zsh , ksh , tcsh ). Interfaces gráficas de usuário para Unix, como GNOME , KDE e Xfce , podem ser chamadas de shells visuais ou shells gráficos . Por si só, o termo shell geralmente está associado à linha de comando. No Unix, qualquer programa pode ser um shell de usuário. Os usuários que desejam usar uma sintaxe diferente para compor comandos podem especificar um interpretador diferente como seu shell de usuário.
O termo shell também se refere a um programa específico, como o Bourne shell , sh . O shell Bourne era o shell usado nas primeiras versões do Unix e se tornou um padrão de fato ; todos os sistemas do tipo Unix têm pelo menos um shell compatível com o shell Bourne. O programa Bourne shell está localizado na hierarquia de arquivos Unix em /bin/sh . Em alguns sistemas, como BSD , /bin/sh é um shell Bourne ou equivalente, mas em outros sistemas, como muitas distribuições Linux , /bin/sh é um link simbólico para um shell que suporta mais recursos (como Bash ). POSIX especifica seu shell padrão como um subconjunto estrito do shell Korn .
Categorias de conchas
Eles podem ser divididos em quatro categorias: tipo Bourne, tipo console C, não tradicional e histórico.
Compatível com Bourne Shell
- Bourne shell (sh) - Escrito por Steve Bourne , quando ele estava no Bell Labs . Foi distribuído pela primeira vez com a versão 7 Unix em 1978 e foi aprimorado ao longo dos anos.
- Almquist shell (ash) -- Escrito como um substituto para o shell Bourne licenciado pelo BSD ; sh do FreeBSD , NetBSD (e seus derivados) são baseados em cinzas e foram aprimorados com POSIX para a ocasião.
- Bourne-Again shell (bash) -- Foi escrito como parte do projeto GNU para fornecer um superconjunto de funcionalidades com o Bourne shell.
- Debian Almquist Shell (dash) -- Dash é um substituto moderno para ash no Debian .
- Korn shell (ksh) - Escrito por David Korn , enquanto estava no Bell Labs .
- Z shell (zsh) -- Considerado o mais completo: é o mais próximo que existe de abranger um superconjunto de sh, ash, bash, csh, ksh e tcsh.
Compatível com o shell C
- C shell (csh) escrito por Bill Joy , enquanto na Universidade da Califórnia, Berkeley . Foi distribuído pela primeira vez com BSD em 1979.
- Escudo TENEX C (tcsh).
Outro ou exótico
- fish , uma concha amigável e interativa, lançada pela primeira vez em 2005.
- mudsh , um shell inteligente estilo jogo que funciona como um MUD .
- zoidberg, um shell modular escrito em Perl, configurado e operado inteiramente em Perl .
- rc , o shell padrão para o Plan 9 do Bell Labs e a versão 10 do Unix escrito por Tom Duff . Ports foram feitos para Inferno e para sistemas operacionais baseados em Unix.
- é shell (s), um shell compatível com RC escrito em meados dos anos 90.
- scsh (Scheme Shell)
Arquivos de configuração para shells
Um shell lê arquivos de configuração em várias circunstâncias sob diferentes dependências de shell. Esta tabela mostra os arquivos de configuração para os shells mais populares:
| sh | ksh | csh | tcsh | festança | zsh | |
|---|---|---|---|---|---|---|
/etc/.login
|
Não | Não | Conecte-se | Conecte-se | Não | Não |
/etc/csh.cshrc
|
Não | Não | Não | Sim | Não | Não |
/etc/csh.login
|
Não | Não | Não | Conecte-se | Não | Sim |
~/.tcshrc
|
Não | Não | Não | Sim | Não | Não |
~/.cshrc
|
Não | Não | Sim | Sim | Não | Não |
~/.login
|
Não | Não | Conecte-se | Conecte-se | Não | Não |
~/.logout
|
Não | Não | Conecte-se | Conecte-se | Não | Não |
/etc/profile
|
Conecte-se | Conecte-se | Não | Não | i.login | Não |
~/.profile
|
Conecte-se | Conecte-se | Não | Não | Conecte-se | Não |
~/.bash_profile
|
Conecte-se | Não | Não | Não | Conecte-se | Não |
~/.bash_login
|
Não | Não | Não | Não | Conecte-se | Não |
~/.bashrc
|
Não | Não | Não | Não | Conecte-se | Não |
/etc/zshenv
|
Não | Não | Não | Não | Não | Sim |
/etc/zprofile
|
Não | Não | Não | Não | Não | Conecte-se |
/etc/zshrc
|
Não | Não | Não | Não | Não | int. |
/etc/zlogin
|
Não | Não | Não | Não | Não | Conecte-se |
/etc/zlogout
|
Não | Não | Não | Não | Não | Conecte-se |
~/.zshenv
|
Não | Não | Não | Não | Não | Sim |
~/.zprofile
|
Não | Não | Não | Não | Não | Conecte-se |
~/.zshrc
|
Não | Não | Não | Não | Não | int. |
~/.zlogin
|
Não | Não | Não | Não | Não | Conecte-se |
~/.zlogout
|
Não | Não | Não | Não | Não | Conecte-se |
Explicação:
- "não" significa que o shell não lerá o arquivo.
- "sim" significa que o arquivo é sempre lido pelo shell.
- "login" significa que o arquivo é lido se o shell for um shell de registro.
- "n/login" significa que o arquivo é lido se o shell não for um shell de sessão.
- "int." significa que um arquivo é lido se for um shell interativo.
- "i.login" significa que um arquivo é lido se o shell for uma sessão interativa.
Histórico
- Shell Thompson (sh) - O primeiro shell Unix foi escrito por Ken Thompson no Bell Labs . Distribuído com Unix versão 1 a 6, de 1971 a 1975. É considerado muito rudimentar pelos padrões modernos e não é usado nos sistemas atuais. Existem algumas partes disponíveis: Ancient UNIX Systems .
- Shell PWB ou shell Mashey (sh) -- Uma versão do shell Thompson, criado por John Mashey e outros enquanto estava no Bell Labs . Distribuído com o Programmer's Workbench UNIX , em 1976.
Shells não Unix
Dentro do conjunto de sistemas operacionais Microsoft Windows , o análogo é o programa command.com , ou cmd.exe para sistemas operacionais baseados no Windows NT , e o Windows PowerShell introduzido com o Windows Server 2008 .
Veja também
- script de shell
- Adendo: Programas para Unix
- Núcleo (ciência da computação)
Bibliografia
- Ellie Quigley (2001). "Introdução aos shells UNIX". Shells Unix por exemplo . Prentice Hall PTR. ISBN 0-13-066538-X . — História de vários shells, os usos e responsabilidades de um shell no Unix.