Original Article: BASH - The Bourne-Again Shell
Author: Chet Ramey

BASH - O Shell Bourne Novamente

Bash é o shell, ou comando de intérprete de linguagens, que irá aparecer no sistema operacional da GNU. Bash é um shell compatível com sh que incorpora caracteristicas úteis da Korn shell (ksh) e C shell (csh). É pretendido adaptá-la aos padrões de Casca e Ferramentas de IEEE POSIX P1003.2/ISO 9945.2. Oferece melhoras funcionais sobre sh para ambos programação e uso interativo. Em adição, a maioria dos scripts sh pode ser reproduzido por Bash sem modificação. Bash é inteiramente portável. Usa um sistema de configuração que descobre características da plataforma de compilação na hora da construção, e pode, portanto, ser construído em quase todas as versões de UNIX. Portas para sistemas semelhantes a UNIX, tais como QNX a Minix, e para sistemas não-UNIX, tais como OS/2, Windows 95/98, e Windows NT estão disponíveis. Bash inclui os seguintes recursos:

Edição e Finalização

Bash oferece uma linha de comando de facilidade de edição que permite aos usuários editar linhas de comando usando emacs familiares ou comandos de edição estilo-vi. A edição permite correções serem feitas sem ter que apagar até o ponto do erro ou começar a linha de comando do zero. As facilidades de edição incluem a característica que permite aos usuários completarem comandos e nomes de arquivos.

A linha de edição da biblioteca de Bash é completamente customizável. Usuários podem definir seus próprios atalhos de teclas -- a ação feita quando uma tecla é pressionada. Um número de variáveis para comportamento de edição sintonizadora também estão disponíveis.

História e Reentrada de Comando

A história de recurso do Bash lembra que os comandos entraram no shell e permite que eles sejam lembrados e re-executados. O histórico pode ser de tamanho ilimitado. Bash permite aos usuários pesquisarem por comando anteriores e reusar porções daqueles comandos quando compondo novos. O histórico pode ser salvo através de sessões shell.

Bash permite aos usuários controlarem quais comandos são salvos no histórico.

Controle de Emprego

Em sistemas que suportam, Bash fornece uma interface ás facilidade de controle de trabalho do sistema operacional, a qual permite processos serem suspensos e re-inicializados, e movidos entre o primeiro e último plano. Bash permite aos usuários seletivamente “esquecerem” sobre trabalhos de último plano.

Funções Shell e Codinomes

Esses mecanismos estão disponíveis para vincular um identificador selecionado pelo usuário a uma lista de comandos que será executada quando o identificador for usado como um nome de comando. As funções permitem variáveis locais e recursividade, e têm acesso ao ambiente do shell acionado. Codinomes podem ser usados para criar uma mnemônica para um nome de comando, expandir uma única palavra para um comando complexo, ou garantir que um comando seja acionado com um conjunto básico de opções.

Matrizes

Versões de Bash mais novas do que bash-2.0 suportam matrizes indexadas de tamanho ilimitado. O subscrito para uma matriz é uma expressão aritmética. Matrizes podem ser atribuídas com uma nova sintaxe de tarefa composta, e vários embutidos têm opções para operar em variáveis de matrizes. Bash inclui um número de variáveis de matrizes embutidas.

Aritmética

Bash permite usuários executarem aritmética por inteiro em qualquer base de dois a sessenta e quatro. Quase todas as linguagens em C de operadores aritméticos estão disponíveis com a mesma sintaxe e precedência como em C. A expansão aritmética permite que uma expressão aritmética seja avaliada e o resultado substituído na linha de comando. Variáveis shell podem ser usadas como operandos, e o valor de uma expressão pode ser atribuído a uma variável.

Uma expressão aritmética pode ser usada como um comando; o status de saída do comando é o valor da expressão.

Citação ANSI-C

Há uma nova citação sintaxe que permite caracteres de contra-barra invertida em séries para serem expandidos de acordo com os padrões de ANSI C.

Expansão Til

Diretórios dos lares dos usuários podem ser expandidos usando esse recurso. Palavras começando com um til podem também ser expandidas ao diretório em funcionamento atual ou anterior.

Extensão de Suporte

Extensão de suporte é uma maneira conveniente de gerar uma lista de séries que compartilham um prefixo ou sufixo em comum.

Capacidades de Subcadeia

Bash permite novas séries serem criadas ao remover subcadeias principais ou rastreadas de valores de variáveis existentes, ou ao especificar um contrabalanceamento de partida e comprimento. Porções dos valores de variáveis podem ser combinados contra padrões de shell e a porção equivalente removida ou novo valor substituído.

Expansão de Variável Indireta

Bash torna fácil encontrar o valor de uma variável shell cujo nome é o valor de outra variável.

Capacidades Expandidas I/O

Bash fornece vários recursos de entrada e saído não disponíveis em sh, incluindo a habilidade de:

  • Especificar um arquivo ou descritor de arquivo para ambos entrada e saída
  • Ler de ou escrever para processos assíncronos usando canais nomeados
  • Ler linhas terminando em contrabarra
  • Exibir um prompt no terminal antes de uma leitura
  • Formatar menus e interpretar respostas para eles
  • Subscrever linhas exatamente como entrada sem processamento de escape

Controle de Comandos Embutidos

Bash implementa vários comandos embutidos para dar aos usuários maior controle sobre quais comandos são executados. O “habitar builtin” permite que outros comandos embutidos sejam seletivamente ativados ou desativados. O comando e os embutidos incorporados mudam a ordem na qual o shell procura por comandos.

Em sistemas que fornecem carregamento dinâmico, novas incorporações podem ser carregadas em um shell em execução de um arquivo-objeto compartilhado. Essas novas incorporações têm acesso a todas as facilidades de shell.

Ajuda

Bash inclui uma facilidade de ajuda para embutidos.

Comportamento Opcional de Shell

Há uma grande quantidade de comportamentos customizáveis de shell. O comando embutido shopt fornece uma interface unificada que permite aos usuários alterarem defeitos de shell.

Customização de Prompt

Bash permite os prompts primário e secundário serem customizados ao interpretar um número de caracteres especiais de barra invertida. Expansão de parâmetros e variáveis também é realizada nos valores de séries prompt primária e secundária antes de serem exibidas.

Segurança

Bash fornece um ambiente shell restrito. Também é possível controlar a execução de séries setuid/setgid.

Acervo de Pastas

Bash fornece um “acervo de pastas”, na qual pastas podem ser adicionadas ou removidas. O diretório atual pode ser mudado para qualquer diretório no acervo. É fácil alternar entre dois diretórios no acervo. O acervo de pastas pode ser salva e restaurada através de diferentes invocações de shell.

Modo POSIX

Bash é quase completamente em conformidade com POSIX.2. O modo POSIX muda aquelas poucas áreas onde o comportamento básico de Bash difere do padrão para corresponder com o padrão. No modo POSIX, Bash é compatível com POSIX.2.

Internacionalização

Bash fornece uma nova sintaxe de citação que permite séries serem traduzidas de acordo com o local atual. O local no qual o próprio shell é executado também pode ser trocado, para que as mensagens de shell possam ser específicas da linguagem.

As facilidade de edição da linha de comando permite a entrada de caracteres de 8-bit, então grande parte da família do conjunto de caracteres de ISO-8859 é suportada.

Tempo de Comando

Bash permite comandos externos, comandos embutidos de shell e funções de shell serem temporizadas. O formato usado para exibir a informação de tempo pode ser mudada pelo usuário.