O Que É Bash? Um Guia Simples do Bourne Again Shell e da Linha de Comando
Um guia simples e sem jargões sobre o Bash, o programa dentro da janela preta de texto em que os desenvolvedores digitam. Tenha uma primeira conversa real com ele, veja o que acontece quando você aperta Enter, renomeie 1.000 fotos em menos de um segundo e leia seu primeiro script.

Nesta página
Você já viu nos filmes: um hacker num quarto escuro, digitando numa janela preta cheia de texto brilhante. A vida real é menos dramática, mas essa janela existe, e milhões de pessoas a usam todos os dias. Muitas vezes, o programa dentro dela se chama Bash.
O Bash é um shell: um programa que permite controlar um computador digitando comandos, em vez de clicar em ícones. O nome vem de Bourne Again SHell, um trocadilho que vamos explicar mais adiante. Ele roda na maioria dos servidores web do mundo, vem em quase todo sistema Linux, ainda está instalado em todo Mac e também pode rodar no Windows. Este artigo explica, em linguagem simples, o que é o Bash, como ele funciona e por que algo com cara tão antiga continua em toda parte.
O que é um shell?
Quando você usa um celular ou um notebook, normalmente conversa com ele por toques e cliques. O shell é outra porta de entrada: você escreve o que quer em palavras, e o computador responde em palavras.
Um bom jeito de imaginar isso é um restaurante:

Você é o cliente. O terminal é a mesa: só a janela por onde o texto entra e sai. O Bash é o garçom: ele entende o seu pedido e o leva à cozinha. A cozinha é o resto do computador: os programas que fazem o trabalho de fato e o kernel, o núcleo do sistema operacional, que controla o hardware.
Por isso as pessoas dizem "abra um terminal" e "digite no shell" quase como se fossem a mesma coisa. Eles trabalham juntos, mas são programas diferentes. No Mac, por exemplo, a janela é um aplicativo chamado Terminal, e o shell dentro dele pode ser o Bash ou o seu primo zsh.
Uma primeira conversa com o Bash
Esta é uma sessão real. Digitamos estes comandos no Bash 5.2 do Ubuntu Linux, como uma usuária chamada maria, num computador chamado laptop, e copiamos as respostas exatamente:

Algumas coisas para reparar:
- Cada linha começa com
maria@laptop:~$. Esse é o prompt: o jeito do Bash de dizer "estou ouvindo". - Depois do
cd ferias, o prompt mudou para~/ferias$. O Bash sempre mostra onde você está. - Muitos comandos, como
mkdiretouch, não imprimem nada quando funcionam. No shell, silêncio significa sucesso. - O
$USERfoi trocado pela palavramaria. Palavras que começam com$são variáveis: nomes que representam um valor.
Anatomia de um comando
Todo comando segue o mesmo padrão simples. Este copia uma foto para uma pasta chamada backup:

- O comando é o verbo: o que fazer. Aqui,
cpquer dizer copiar (do inglês copy). - As opções mudam o jeito de fazer. Costumam começar com hífen:
-vpede aocpque conte o que fez. - Os argumentos dizem sobre o que agir: copiar
praia.jpgparabackup/.
Os nomes dos comandos são curtos porque as pessoas os digitam o dia inteiro, e vêm do inglês: cp de copy (copiar), mv de move (mover), ls de list (listar), rm de remove (remover). Parecem enigmáticos no começo, mas são poucos os que você usa com frequência.
O que o Bash faz quando você aperta Enter
O Bash não apenas repassa as suas palavras. Antes de executar qualquer coisa, ele lê o seu comando e o reescreve. O Bash tem um recurso, o set -x, que mostra o comando reescrito, e nós o usamos para ver isso acontecer:

O truque mais útil aqui é o *, chamado de curinga. *.jpg quer dizer "todo nome que termina em .jpg". O Bash troca o curinga pela lista real de arquivos antes mesmo de o programa começar. Assim, cp, mv, rm e qualquer outro programa ganham curingas de graça, sem precisar saber nada sobre eles.
Uma esquisitice que vale conhecer: se nada combinar, o Bash deixa o * como está. Quando esvaziamos a pasta e rodamos o mesmo tipo de cópia, recebemos este erro real:
cp: cannot stat '/home/maria/ferias/*.jpg': No such file or directoryO cp foi procurar um arquivo chamado literalmente *.jpg. É uma surpresa clássica para iniciantes, e um bom lembrete de que quem cuida do * é o Bash, não o programa.
Dez comandos do dia a dia e cinco teclas úteis
Dá para ir surpreendentemente longe com pouquíssimos comandos:

As teclas importam tanto quanto os comandos. Quem tem experiência quase nunca digita um nome de arquivo inteiro: digita as primeiras letras e aperta Tab, e o Bash completa. A seta para cima traz de volta o último comando, então corrigir um erro de digitação leva um segundo. E o Ctrl + C é o freio de emergência quando algo demora mais do que você esperava.
O Bash também conecta comandos. O símbolo |, chamado de pipe (cano, em inglês), manda a saída de um comando para o próximo, e o > salva a saída num arquivo:
ls *.jpg | wc -l # lista as fotos e conta as linhas: imprime 2
ls *.jpg > fotos.txt # salva a lista de fotos num arquivoOs pipes são uma das grandes ideias do Unix, e o artigo sobre o Unix mostra seis programinhas ligados por pipes para achar as palavras mais comuns de uma história.
Por que digitar se dá para clicar?
Para um arquivo, clicar funciona bem. O shell brilha quando você precisa fazer a mesma coisa muitas vezes. Imagine que a sua câmera chamou 1.000 fotos das férias de IMG_0001.jpg a IMG_1000.jpg, e você quer que elas se chamem viagem-praia-0001.jpg e assim por diante. Nós testamos:

Essa linha é um loop (laço de repetição): "para cada arquivo que combina com IMG_*.jpg, faça isto, e pronto". No nosso teste, ela renomeou os 1.000 arquivos em menos de um segundo, todas as vezes. À mão, mesmo num ritmo ágil de 5 segundos por arquivo, levaria bem mais de uma hora, e você provavelmente erraria a digitação algumas vezes.
Esse é o verdadeiro motivo de o shell ter sobrevivido por 50 anos. Clicar é fácil de aprender, mas não escala. Digitar comandos exige um pouco de aprendizado, e depois deixa você fazer mil coisas tão facilmente quanto uma.
Scripts: receitas de comandos
Se você se pega digitando os mesmos comandos de novo e de novo, pode salvá-los num arquivo e executar o arquivo. Esse arquivo é um script Bash, e é aí que o Bash deixa de ser só uma linha de comando e vira uma linguagem de programação:

O script tem tudo o que uma linguagem de programação precisa: variáveis para guardar coisas, loops para repetir coisas e decisões (if, "se" em inglês) para escolher o que fazer. A linha 5 resolve a esquisitice de antes: sem ela, uma pasta vazia faria o cp reclamar de um arquivo chamado *.jpg. Com ela, o script diz corretamente "Nenhuma foto encontrada." Testamos os dois casos.
Scripts assim fazem o mundo moderno funcionar em silêncio:
- Servidores os usam para iniciar, fazer backups e limpar arquivos velhos, muitas vezes num horário marcado, como toda noite às 2h.
- Instalar programas no Linux muitas vezes significa rodar um script que outra pessoa escreveu.
- Builds automatizados, como o GitHub Actions, rodam seus passos com o Bash por padrão no Linux. Toda vez que alguém envia código novo, scripts Bash o testam e o publicam.
- Contêineres Docker, as caixas em que roda a maioria dos aplicativos na nuvem, costumam ser montados com comandos de shell.
Onde você encontra o Bash
- Linux: o Bash é o shell padrão na maioria dos sistemas Linux, dos notebooks com Ubuntu aos servidores que rodam sites e a nuvem.
- Mac: o Bash foi o shell padrão do Mac de 2003 a 2019. Desde o macOS Catalina, contas novas usam o zsh, mas o Bash continua instalado. A Apple distribui uma versão antiga, a 3.2, porque as versões novas usam uma licença (a GPLv3) que a Apple evita.
- Windows: o Windows tem os seus próprios shells, o Prompt de Comando e o PowerShell. Desde 2016, ele também roda o Bash de verdade pelo WSL, o Subsistema do Windows para Linux. Muitos desenvolvedores também usam o Git Bash, que vem com o Git para Windows.
- Computadores pequenos: o Raspberry Pi, roteadores e muitos outros aparelhos rodam Linux, e normalmente têm um Bash ou um shell parecido lá dentro.
Quantas pessoas usam de fato? Na Pesquisa de Desenvolvedores do Stack Overflow de 2025, quase metade dos desenvolvedores que responderam disse ter trabalhado com Bash ou outro shell no último ano:

O Bash raramente é a linguagem principal de alguém. Ninguém faz um aplicativo de celular nele. Mas ele é a cola que mantém todo o resto junto, e é por isso que aparece acima de linguagens famosas como Java e C++.
O Bash não para de crescer
O Bash tem mais de 35 anos e continua sendo melhorado. Baixamos seis versões do arquivo oficial do GNU e medimos duas coisas: o tamanho do manual impresso e quantas linhas de código o programa tem:

O manual mais que dobrou, de 37 para 96 páginas, e o código quase triplicou. Mesmo assim, um script escrito para o Bash nos anos 1990 normalmente ainda roda hoje. Quem mantém o Bash se esforça muito para não quebrar scripts antigos, porque boa parte do mundo depende deles.
Você mesmo pode ler esse manual de 96 páginas: digite man bash (aperte q para sair). Ele é famoso por ser longo, e por ser completo.
A família dos shells
O Bash não surgiu do nada. Ele faz parte de uma família de shells do Unix que vem desde 1971:

Em 1979, Stephen Bourne, do Bell Labs, escreveu o Bourne shell, conhecido simplesmente como sh. Ele virou o shell padrão do Unix, e o seu jeito de escrever comandos e scripts ainda é a base da maioria dos shells de hoje.
Só que o Bourne shell pertencia à AT&T. Nos anos 1980, o Projeto GNU, criado por Richard Stallman para construir um sistema parecido com o Unix totalmente livre, precisava de um shell livre. Em 1988, o programador Brian Fox começou a escrever um para a Free Software Foundation, e o lançou em 1989. Ele entendia os scripts do Bourne shell, juntava os melhores recursos de outros shells e ganhou um nome brincalhão: Bourne Again SHell. Em inglês, "Bourne again" soa igual a "born again", que quer dizer "nascido de novo".
Alguns anos depois, Chet Ramey assumiu os cuidados com o Bash. Ele o mantém há mais de três décadas, o que faz dele um dos guardiões mais longevos de qualquer software importante.
Quando o Linux apareceu, em 1991, ele combinou o kernel de Linus Torvalds com as ferramentas do GNU, o Bash entre elas. O Linux levou o Bash a todo lugar aonde foi, o que hoje quer dizer a maioria dos servidores da internet.
O dia em que o Bash virou notícia
Em setembro de 2014, um pesquisador de segurança chamado Stéphane Chazelas encontrou no Bash um bug que tinha passado despercebido desde 1989. Ele ganhou o apelido de Shellshock.
O problema estava no jeito como o Bash lia certas configurações passadas a ele por outros programas. Um texto montado com cuidado podia enganar o Bash e fazê-lo executar comandos que ninguém pediu. Como muitos servidores web usavam o Bash nos bastidores, às vezes um atacante conseguia tomar o controle de um servidor só visitando um endereço web com o texto errado.
As correções saíram em poucos dias, e administradores de sistemas do mundo todo correram para atualizar. O episódio serviu de alerta: alguns dos softwares mais importantes do mundo são mantidos por pouquíssimas pessoas, muitas vezes por amor ao trabalho.
Uma breve história

Experimente você mesmo
É quase certo que o seu computador já tem um shell agora mesmo:
- Mac: abra o aplicativo Terminal (procure com Cmd + Espaço). O shell será o zsh, que entende todos os comandos básicos deste artigo. Digite
bashe aperte Enter para trocar para o Bash, eexitpara voltar. - Linux: abra o aplicativo Terminal. É muito provável que já seja o Bash.
- Windows: abra o PowerShell como administrador e rode
wsl --install. Depois de reiniciar, você terá o Ubuntu Linux com o Bash dentro do Windows. Ou instale o Git para Windows, que vem com o Git Bash.
Depois, experimente alguns comandos seguros:
1pwd # onde estou?
2ls # o que tem aqui?
3echo "Olá, $USER" # diga olá
4echo $((60 * 60 * 24)) # segundos num dia
5date # a data e a hora de hoje
6history # tudo o que você digitou até agoraDuas dicas de segurança: cuidado com o rm, que apaga na hora e sem lixeira, e nunca cole no seu terminal comandos de desconhecidos da internet sem entendê-los. Um shell faz exatamente o que você manda, inclusive as coisas ruins.
Perguntas comuns
O Bash é uma linguagem de programação? Sim. O Bash é ao mesmo tempo um shell em que você digita e uma linguagem de script, com variáveis, loops e decisões. Ele é ótimo para ligar programas entre si e automatizar tarefas, e não foi feito para construir aplicativos grandes.
Qual é a diferença entre o Bash e o zsh? São primos próximos. Os dois entendem quase todos os comandos do dia a dia, e a maioria dos scripts simples funciona nos dois. O zsh traz comodidades extras para digitar, e o Bash é mais comum em servidores e em scripts.
O Prompt de Comando do Windows é a mesma coisa? É a mesma ideia, um shell, mas de outra família. O Prompt de Comando descende do DOS, e o PowerShell é o shell moderno da Microsoft. Os comandos são diferentes: dir em vez de ls, por exemplo. Veja O Que É o Sistema Operacional DOS? para esse ramo da história.
O que é sudo? Um comando que executa outro comando como administrador, o usuário que pode mudar qualquer coisa. Ele aparece em instruções de instalação, como sudo apt install firefox. Ele pede a sua senha porque é poderoso.
Preciso do Bash se não sou programador? Não, mas um pouco já ajuda muito. Se um dia você precisar renomear centenas de arquivos, consertar um projeto com Raspberry Pi ou seguir instruções técnicas, saber dez comandos deixa tudo bem menos assustador.
Glossário
- Shell: um programa que lê os comandos que você digita e os executa.
- Bash: o Bourne Again SHell, o shell mais usado, criado para o Projeto GNU em 1989.
- Terminal: a janela que mostra o texto do shell. Também chamado de emulador de terminal.
- Linha de comando: digitar comandos, em oposição a clicar numa interface gráfica.
- Prompt: o texto, como
maria@laptop:~$, que mostra que o shell está pronto para um comando. - Comando: a primeira palavra que você digita, o que fazer, como
cp. - Opção: uma configuração que muda o funcionamento de um comando, normalmente começando com hífen, como
-v. - Argumento: aquilo sobre o que o comando deve agir, como o nome de um arquivo.
- Curinga: um padrão como
*.jpgque o Bash expande nos nomes de arquivo que combinam. - Variável: um nome que guarda um valor, lido com
$, como$USER. - Pipe: o símbolo
|, que manda a saída de um comando para outro. - Script: um arquivo de comandos que pode ser executado como um programa.
- Shebang: a primeira linha
#!/bin/bash, que diz qual programa deve rodar um script. - PATH: a lista de pastas onde o Bash procura programas.
Para encerrar
O Bash é o garçom entre você e a cozinha do seu computador. Você digita um pedido em palavras, ele expande os seus atalhos, encontra o programa certo, executa e mostra a resposta. Salve alguns desses pedidos num arquivo, e você terá um script capaz de fazer em um segundo o que levaria uma hora de cliques.
Ele nasceu em 1989 como uma cópia livre de um shell mais antigo, ganhou um nome com trocadilho e hoje roda na maioria dos servidores que formam a internet. Você não precisa virar especialista. Abra um terminal, digite pwd, depois ls, e então aperte a seta para cima. Você acabou de ter a sua primeira conversa com o Bash.
Read next

O Que É a Linguagem de Programação C++? Um Guia Simples da Linguagem por Trás de Jogos e Navegadores
Um guia simples e sem jargões sobre o C++, a linguagem por trás de videogames, navegadores e muitos programas do dia a dia. Entenda o que ele acrescenta ao C, como funcionam as classes e a limpeza automática e por que ele é rápido e complexo.

O Que É a Linguagem de Programação C#? Um Guia Simples da Linguagem da Microsoft para Apps, Sites e Jogos
Um guia simples e sem jargões sobre o C#, a popular linguagem da Microsoft por trás de jogos feitos na Unity, sites e apps de empresas. Entenda de onde vem o nome, como ele roda em quase qualquer aparelho e por que cuida da memória para você.

O Que É a Linguagem de Programação C? Um Guia Simples da Linguagem Que Move o Mundo
Um guia simples e sem jargões sobre o C, a linguagem de programação de mais de 50 anos escondida no seu celular, no seu carro e na internet. Entenda o que é o C, por que ele é tão rápido, como lida com a memória e por que ainda importa.
Comentários
Be kind and specific. Comments with links from new accounts appear after a moderator reviews them.