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

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

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):
Bashcomando_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

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?
Bashcommand -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:
Bashpwd 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:

Bashcommand -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:

Bashls -l ./arquivo file ./arquivo head -n 1 ./script.sh

Correções típicas:

Bashchmod +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:
Bashcomando 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:

Bashkill -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:

Bashcomando_que_falha | grep algo echo $?

Se você quer falhar quando qualquer etapa falhar:

Bashset -o pipefail

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

Bashecho "${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:

Bashecho $?

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:
Bashcomando 1>saida.txt 2>erros.txt comando >tudo.txt 2>&1