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

Entenda o que o seu terminal está tentando dizer.

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...
7 min

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
Sair da versão mobile