Bash

GNU Bash ou simplesmente Bash é um interpretador de comandos, um entre os diversos tradutores entre o usuário e o sistema operacional conhecidos como shell.

Acrônimo para "Bourne-Again SHell", o Bash é uma evolução retro-compatível muito mais interativa do Bourne Shell (sh). Os shells Bourne permitem a execução de sequências de comandos inseridos diretamente na linha de comandos ("prompt") ou ainda lidos de arquivos de texto conhecidos como shell scripts. Neles se podem invocar comandos internos aos próprios shells (conhecidos como comandos "builtins") ou ainda arquivos binários ou scripts de terceiros arquivados nos dispositivos de armazenamento do sistema.

O Bash apresenta recursos e características de uma linguagem de programação alto nível. É compatível por configuração com as normas POSIX, de forma que os scripts Bash podem ser executados em diversos sistemas "tipo unix"; e quando invocado (via ligação) com o nome de "sh", transforma-se automaticamente em seu predecessor homônimo.

O direito autoral do Bash pertence à Free Software Foundation, Inc., que o publica desde o lançamento como software livre. Foi liberado em 1989 e é shell padrão no projeto GNU. O projeto GNU desenvolve uma plataforma de softwares livres voltados às mais diversas tarefas que, em conjunção com o kernel desenvolvido por Linus Torvalds, define a maioria das distribuições GNU/Linux conhecidas. Por ser o shell padrão do projeto GNU, ao se invocar um terminal em um sistema "Linux", provavelmente o Bash será o shell a esperar pelo comando do usuário.

Shell imprescindível aos sistemas operacionais OS X e MacOS, da Apple, o Bash já se encontra também disponível, de forma estável, no sistema Windows 10. Fruto de uma parceria entre a Canonical e a Microsoft, uma versão atualizada do "Bash on Ubuntu on Windows" é ofertada na Microsoft Store para instalação no Windows Pro; bastando habilitar os recursos do Subsistema Windows para Linux no gerenciador de recursos do Windows e proceder com a instalação do Ubuntu a partir da loja da Microsoft. Outras distribuições Linux como o OpenSUSE, Kali Linux e Debian são igualmente ofertadas para instalação; todas tornando disponíveis o uso do Bash no Windows.

Um exemplo simples de um script em Bash vê-se abaixo. No código há informações sobre o que ele faz.

#!/bin/bash
# A linha acima (primeira), mesmo comentada (de fato iniciada pelo shebang #!) indica qual o interpretador de comandos (shell) a ser usado para interpretar este script.
# Textos precedidos por '#" são ignorados! Útil para se fazerem comentários.
# Limpa a tela
clear
# Exibe na tela "Olá" e o nome do usuário.
echo "Olá ${USER}!"
# Verifica se o usuário tem privilégios de superusuário (é o "root"), e alerta quanto à não execução do programa em tal situação.
ROT=$(id -u)
if [ $ROT -eq 0 ]
 then
  echo "O programa não deve ser executado pelo superusuário (\"root\")."
  echo "Por favor faça autenticação como usuário comum para executá-lo."
  echo "Encerrando a sessão..."
  sleep 5
  exit 2
 else
  echo "Executando o script..."
fi
#  Código do programa... \/
#

Histórico do Bash
O Bash é o shell desenvolvido para o projeto GNU, da Free Software Foundation, que se tornou padrão nas várias distribuições Linux. Pode ser usado também com outros sistemas operacionais, como o Unix; há versões para o sistema Microsoft Windows₢ (como o do projeto Cygwin), algumas com as bibliotecas necessárias embutidas no binário (no caso do winbash; o que torna desnecessário instalar o ambiente POSIX inteiro para ter apenas o Bash). É compatível com o Bourne shell (sh), incorporando os melhores recursos do C shell (csh) e do Korn Shell (ksh).

Arquivos de ambiente
Você pode customizar seu ambiente do Bash utilizando alguns arquivos como:
 .bash_profile
 .bashrc
 /etc/profile

.bash_profile
Este arquivo fica localizado no diretório pessoal de cada usuário. É executado por shells que usam autenticação (nome e senha). Ele contém comandos que são executados para o usuário no momento do login no sistema após o /etc/profile. Note que este é um arquivo oculto pois tem um "." no inicio do nome.

Por exemplo, colocando a linha abaixo cria um apelido para o comando "ls --color=auto" usando ls, assim toda vez que você digitar ls será mostrada a listagem colorida:

alias ls='ls --color=auto'

.bashrc
Possui as mesmas características do .bash_profile mas é executado por shells que não requerem autenticação (como uma seção de terminal no X).

Os comandos deste arquivo são executados no momento que o usuário inicia um shell com as características acima. Note que este é um arquivo oculto pois tem um "." no inicio do nome.

/etc/profile
Este arquivo contém comandos que são executados para todos os usuários do sistema no momento de autenticação. Somente o usuário root pode ter permissão para modificar este arquivo.

Este arquivo é lido antes do arquivo de configuração pessoal de cada usuário (.profile (para usuário root) e .bash_profile). Pode ser utilizado caso seja necessário fazer alguma personalização do ambiente para todos os usuários que utilizam o computador.

Quando é carregado através de um shell que requer autenticação (nome e senha), o Bash procura estes arquivos em sequência e executa os comandos contidos, caso existam:

. /etc/profile
. ~/.bash_profile
. ~/.bash_login
. ~/.profile

Interrompe a pesquisa assim que localiza o primeiro arquivo no diretório do usuário (usando a sequência acima). Por exemplo, se tem o arquivo ~/.bash_login e ~/.bash_profile no seu diretório de usuário, processará o /etc/profile e após isto o ~/.bash_profile, mas nunca processará o ~/.bash_login (a menos que o ~/.bash_profile seja apagado ou renomeado).

Caso o Bash seja carregado através de um shell que não requer autenticação (um terminal no X, por exemplo), o seguinte arquivo é executado: ~/.bashrc.

Observação: nos sistemas Debian, o perfil do usuário root está configurado no arquivo /root/.profile. A razão disto é porque se o Bash for carregado através do comando sh, fará a inicialização clássica deste shell ao ler primeiro o arquivo /etc/profile e após o ~/.profile e ignora o .bash_profile e o .bashrc que são arquivos de configuração usados somente pelo Bash. Exemplo, ao inserir a linha mesg y no arquivo /etc/profile permite que todos os usuários do sistema recebam pedidos de 'talk' de outros usuários. Caso um usuário não quiser receber pedidos de 'talk', basta somente adicionar a linha mesg n no arquivo pessoal .bash_profile

Ver também 
 GNU readline - Biblioteca utilizada pelo Bash para implementar edição de linha de comando.
 LINUX Guia de Comandos
 Shell script

Ligações externas 
 
 Várias documentações diretas e simples para quem quer aprender mais sobre shell script com Bash
 Papo de Botequim - Julio Neves

Projeto GNU
Linux
Interpretadores de comandos
Software de 1989
Software livre multiplataforma