Códigos de erro no Linux: O guia atualizado (2026)

Entenda o que o seu terminal está tentando dizer.

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...

Os códigos de erro no Linux, chamados exit codes, são números (0–255) que um programa devolve ao sistema ao terminar. 0 significa sucesso. Valores como 1, 126 e 127 indicam falhas comuns (erro geral, permissão/execução, comando não encontrado). Você lê o último código com echo $?. Se você está com outro problema diferente dos exit codes, veja o guia sobre o kernel panic.

O que são exit codes e por que eles importam?

Todo comando que você executa no terminal termina com um status de saída. Esse número é a forma padrão (e scriptável) de dizer “deu certo” ou “deu errado”, inclusive em automações, CI/CD, cron e scripts Bash.

  • Como ver o último exit code (do comando imediatamente anterior):
Bash
comando_qualquer
echo $?
  • Regra básica
    • 0 = sucesso
    • 1–255 = algum tipo de falha ou condição especial
  • Por que o intervalo vai até 255?
    Em sistemas POSIX, o status de saída costuma ser um valor de 8 bits. Se um programa tentar “sair” com um número maior, o shell geralmente “encaixa” isso no intervalo (módulo 256). Na prática, não use códigos acima de 255.

Tabela de referência rápida: códigos de erro comuns

CódigoNome comumO que geralmente significaExemplo típicoComo resolver rápido
0SuccessComando executou sem errosgrep achou e retornou OK (ou programa terminou bem)Nada a fazer
1General errorFalha genérica (depende do programa)grep não encontrou; app retornou “erro”Leia a mensagem, valide argumentos e entradas
126Not executableEncontrou o arquivo, mas não conseguiu executarPermissão negada, binário inválidochmod +x, verifique arquitetura, shebang
127Command not foundComando não existe ou não está no PATHfoo: command not foundInstale o pacote, corrija o nome, ajuste PATH
130Script terminated by Ctrl+CInterrupção pelo usuário (SIGINT)Você apertou Ctrl+CNormal; trate no script se necessário
255Fatal error / out of range“Falha severa” (muito comum em ssh) ou status “estourado”ssh não conectouVerifique rede/host/chaves; veja logs do comando

Observação importante: o significado exato pode variar por programa, mas 126/127/130 são extremamente consistentes em shells como Bash.

Como identificar e corrigir erros no terminal

A ideia é sempre combinar: mensagem do comando + exit code + contexto (permissões, caminho, dependências, sinais).

1) Confirme o comando e o caminho

  • O comando existe?
Bash
command -v nome_do_comando
which nome_do_comando
type nome_do_comando

Se isso não retornar nada, você está caminhando para 127.

  • Confira se você está no diretório certo:
Bash
pwd
ls

(Comandos em destaque: ls)

2) Erro 127: “command not found” (comando não encontrado)

Causas mais comuns:

  • Digitou errado (gti em vez de git)
  • Pacote não instalado
  • PATH não inclui o diretório do binário

Diagnóstico e correção:

Bash
command -v git
echo "$PATH"

Instalação (exemplos):

  • Debian/Ubuntu: sudo apt install <pacote>
  • Fedora: sudo dnf install <pacote>
  • Arch: sudo pacman -S <pacote>

3) Erro 126: encontrado, mas não executável

Causas comuns:

  • Falta permissão de execução
  • Arquivo não é um executável válido
  • Script sem “shebang” correto (#!/bin/bash, #!/usr/bin/env python3)
  • Binário para outra arquitetura (ex.: ARM em x86_64)

Diagnóstico:

Bash
ls -l ./arquivo
file ./arquivo
head -n 1 ./script.sh

Correções típicas:

Bash
chmod +x ./script.sh
./script.sh

(Comando em destaque: chmod)

4) Erro 1: “deu errado”, mas por quê?

O código 1 costuma ser “falha genérica”. Então você depende da mensagem e, se necessário, de logs/trace.

Dicas práticas:

  • Rode com mais verbosidade (quando existir): -v, --verbose, --debug
  • Valide argumentos e arquivos de entrada
  • Procure a palavra “error” no output:
Bash
comando 2>&1 | grep -i "error\|failed\|fatal"

(Comando em destaque: grep)

5) Quando o programa morre por sinal (128 + N)

Se um processo for encerrado por um sinal, o shell costuma reportar:

  • 128 + número_do_sinal

Exemplos úteis (bem comuns em Linux):

  • 130 = 128 + 2 (SIGINT, Ctrl+C)
  • 137 = 128 + 9 (SIGKILL, “morto à força”; muitas vezes OOM Killer)
  • 139 = 128 + 11 (SIGSEGV, “segmentation fault”)

Para investigar sinais:

Bash
kill -l
dmesg | tail -n 50
journalctl -xe | tail -n 80

6) Saída de pipelines: o “pegadinha” do |

Por padrão, em Bash, o exit code de um pipeline é o do último comando.

Exemplo:

Bash
comando_que_falha | grep algo
echo $?

Se você quer falhar quando qualquer etapa falhar:

Bash
set -o pipefail

E, se precisar ver todos os status do pipeline (Bash):

Bash
echo "${PIPESTATUS[@]}"

Dúvidas relacionadas (PAA)

O que significa o erro 127?

Significa que o shell não encontrou o comando: ele não existe, não está instalado, ou não está acessível via PATH. Use command -v <comando> para confirmar e instale o pacote correspondente.

Como ver o último código de erro gerado?

Use:

Bash
echo $?

Isso mostra o exit code do comando executado imediatamente antes.

Qual a diferença entre erro de saída e erro padrão (stderr)?

  • Exit code: um número (0–255) que indica sucesso/falha para scripts e automações.
  • stderr: um fluxo de texto para mensagens de erro (ex.: “Permission denied”).
    Um comando pode escrever em stderr e ainda sair com 0 (ou o contrário). Para separar/combinar:
Bash
comando 1>saida.txt 2>erros.txt
comando >tudo.txt 2>&1
Compartilhe este artigo