Sim, o Linux é case sensitive: ele diferencia maiúsculas de minúsculas em nomes de arquivos e pastas, comandos, opções de comandos e variáveis de ambiente. Para o sistema, Relatorio.txt, relatorio.txt e RELATORIO.TXT são três arquivos distintos, que podem existir lado a lado na mesma pasta, e digitar LS no lugar de ls resulta em “comando não encontrado”.
Esse comportamento vem dos sistemas de arquivos nativos, como ext4, Btrfs e XFS, que tratam o nome como uma sequência exata de bytes. A exceção são partições FAT32/exFAT e diretórios com o recurso casefold ativado, como mostra a tabela abaixo.
| Onde | Diferencia maiúsculas? | Observação |
|---|---|---|
| Linux (ext4, Btrfs, XFS) | Sim | Padrão em praticamente todas as distribuições |
| Linux com ext4 casefold | Não, por pasta | Ativado com chattr +F em pasta vazia |
| Pendrive FAT32/exFAT no Linux | Não | Limitação do próprio formato |
| Windows (NTFS) | Não, por padrão | Preserva a grafia; pode ativar por pasta |
| macOS (APFS) | Não, por padrão | Existe variante APFS sensível a maiúsculas |
| Comandos e variáveis no shell | Sim | $HOME é diferente de $home |
O que significa ser case sensitive
Um sistema case sensitive é aquele que considera letras maiúsculas e minúsculas como caracteres diferentes. A expressão vem do inglês “case”, referência às caixas tipográficas: caixa-alta (upper case) e caixa-baixa (lower case). Em português, fala-se em “sensível a maiúsculas e minúsculas” ou “diferencia caixa”.
O oposto é o sistema case insensitive, em que “Foto.JPG” e “foto.jpg” apontam para o mesmo arquivo. Há ainda um meio-termo chamado case preserving, adotado por Windows e macOS: o sistema guarda a grafia que você digitou, mas na hora de buscar ou comparar ignora a diferença. Por isso, nesses sistemas você não consegue ter dois arquivos que só mudam na caixa das letras.
Em que o Linux diferencia maiúsculas de minúsculas
O Linux diferencia maiúsculas de minúsculas em quase tudo que você digita no terminal, não apenas em arquivos. Isso vale porque o kernel, o shell (Bash, Zsh, Fish) e a maioria dos programas herdaram a tradição do Unix, em que comparar nomes byte a byte é mais simples, mais rápido e não depende de idioma.
- Arquivos e pastas:
Documentosedocumentossão diretórios diferentes; umcd documentosfalha se a pasta se chama Documentos. - Comandos: os executáveis têm nomes exatos, quase sempre em minúsculas, então
Sudo,APTouGrepnão funcionam. - Opções de comandos:
ls -rinverte a ordem, enquantols -Rlista de forma recursiva; trocar a caixa muda o resultado. - Variáveis de ambiente:
$PATHe$pathsão variáveis distintas, e o sistema só usa a primeira para localizar programas. - Usuários e senhas: nomes de login são, por convenção, minúsculos, e senhas sempre diferenciam caixa.
- URLs servidas pelo Linux: em servidores Apache ou Nginx,
/Img/Logo.pnge/img/logo.pngsão caminhos diferentes.
Mesmo nome, letras diferentes: o que o Linux entende
Arquivos
foto.jpg, Foto.jpg e FOTO.JPG = 3 arquivos separados
Comandos
ls funciona; LS retorna “comando não encontrado”
Opções
ls -r inverte a ordem; ls -R entra nas subpastas
Exceções
FAT32, exFAT e pastas ext4 com casefold ignoram a caixa
Exemplos no terminal
O teste mais rápido para ver o Linux case sensitive na prática é criar arquivos com a mesma grafia e caixas diferentes. Em qualquer pasta da sua home, rode os comandos abaixo:
$ mkdir teste && cd teste
$ touch nota.txt Nota.txt NOTA.TXT
$ ls
NOTA.TXT Nota.txt nota.txt
$ LS
LS: comando não encontrado
$ echo $home
$ echo $HOME
/home/usuarioOs três arquivos aparecem separados, o comando em caixa-alta não existe e a variável $home volta vazia. Se você copiar essa pasta para um pendrive formatado em FAT32 ou para o Windows, o sistema de destino vai acusar conflito, porque para ele os três nomes são iguais.

Por que o sistema de arquivos Linux funciona assim
O sistema de arquivos Linux trata o nome de um arquivo como uma sequência de bytes, com apenas duas restrições: não pode conter a barra (/) nem o caractere nulo. Ele não interpreta se aquele byte é uma letra, qual o idioma ou qual seria a versão maiúscula dela. Comparar bytes é direto e previsível.
Ser case insensitive exige regras de equivalência entre letras, e isso não é trivial fora do inglês. O “i” turco tem versões com e sem ponto, o “ß” alemão vira “SS” em maiúsculas e letras acentuadas podem ser codificadas de mais de uma forma em Unicode. Sistemas que ignoram a caixa precisam de tabelas para resolver esses casos, o que acrescenta complexidade e custo de processamento.
O Windows é case sensitive?
Não, o Windows não é case sensitive por padrão: o NTFS preserva a grafia, mas trata “Arquivo.txt” e “arquivo.txt” como o mesmo arquivo. O mesmo vale para o Prompt de Comando e o PowerShell, em que DIR e dir funcionam igual, e para variáveis de ambiente como %PATH%.
Com a chegada do WSL (Windows Subsystem for Linux), a Microsoft passou a permitir sensibilidade a maiúsculas por diretório no NTFS. O comando fsutil.exe file setCaseSensitiveInfo C:\pasta enable, executado como administrador, ativa o comportamento naquela pasta. Detalhes e limitações estão na documentação oficial do WSL, citada também na tabela.
E o macOS?
O macOS usa por padrão o APFS em modo case insensitive e case preserving, igual ao Windows nesse ponto, mesmo sendo um sistema derivado do Unix. Ao formatar um volume pelo Utilitário de Disco, porém, é possível escolher a variante “APFS (Sensível a Maiúsculas)”. A Apple recomenda cautela, porque alguns aplicativos não funcionam bem nesse modo; a orientação está no Suporte da Apple.
| Sistema | Padrão | Dá para mudar? |
|---|---|---|
| Linux | Case sensitive | Sim, com casefold (ext4/F2FS) |
| Windows | Case insensitive, preserva grafia | Sim, por pasta, via fsutil |
| macOS | Case insensitive, preserva grafia | Sim, formatando em APFS sensível |
Como deixar o Linux case insensitive
Dá para deixar o Linux case insensitive em pastas específicas usando o recurso casefold do ext4, disponível a partir do kernel 5.2, ou ajustando o shell para ignorar a caixa em buscas e no autocompletar. Transformar o sistema inteiro em insensível não é recomendado, porque muitos programas contam com a diferença entre maiúsculas e minúsculas.
Casefold no ext4, passo a passo
O casefold é útil para jogos rodando via Wine/Proton, compartilhamentos com Windows e pastas de projetos migrados. Antes de começar, faça backup: os passos envolvem formatar ou alterar o sistema de arquivos.
- Confira os requisitos: rode
uname -rpara ver se o kernel é 5.2 ou mais novo e use um e2fsprogs recente, versão 1.45 ou superior. - Ative o recurso na partição: ao formatar, use
mkfs.ext4 -O casefold /dev/sdX1; versões recentes dotune2fs -O casefoldtambém ativam em partição desmontada. - Monte e crie a pasta: monte a partição normalmente e crie um diretório vazio, por exemplo
mkdir /dados/jogos. - Marque a pasta como insensível: execute
chattr +F /dados/jogos; o atributo só pode ser aplicado enquanto o diretório estiver vazio. - Verifique:
lsattr -d /dados/jogosdeve exibir a letra F, e criar Teste.txt e depois abrir teste.txt deve levar ao mesmo arquivo.
Subpastas criadas dentro de um diretório com o atributo F herdam o comportamento. A documentação do ext4 e do recurso de codificação de nomes fica no portal de documentação do kernel Linux.
Ajustes no terminal sem mexer no disco
Se o incômodo é só na hora de digitar, o Bash e as ferramentas comuns têm opções para ignorar a caixa sem alterar nada no sistema de arquivos:
- Autocompletar com Tab: adicione
set completion-ignore-case onao arquivo~/.inputrce abra um novo terminal. - Curingas (glob):
shopt -s nocaseglobfazls *.jpgencontrar também arquivos terminados em .JPG. - Busca de arquivos:
find . -iname "relatorio*"localiza o nome em qualquer combinação de maiúsculas e minúsculas. - Busca de texto:
grep -i erro log.txtencontra “erro”, “Erro” e “ERRO” nas linhas do arquivo. - Samba: no
smb.conf, a opçãocase sensitivedefine como o compartilhamento responde a clientes Windows.
Erros comuns causados pela diferença de caixa
Os problemas mais frequentes aparecem quando um projeto nasce no Windows ou no macOS e depois roda em um servidor Linux, como uma VPS ou um pipeline de CI. No sistema de origem tudo funciona, porque a caixa é ignorada; no Linux, o arquivo “não existe”.
- Imagens quebradas no site: o HTML chama
logo.png, mas o arquivo enviado se chamaLogo.PNG; no servidor Linux, o navegador recebe erro 404. - Imports que falham: em Node.js ou Python,
import "./Utils"funciona no Mac quando o arquivo é utils.js, mas quebra no build em Linux. - Renomear só a caixa no Git: com
core.ignorecaseativo, mudar “readme.md” para “README.md” pode não ser detectado; usegit mv -f readme.md README.md. - Arquivos duplicados no clone: um repositório com Nota.txt e nota.txt, criado no Linux, gera conflito ao ser clonado em Windows ou macOS.
- Tabelas de banco de dados: no MySQL rodando em Linux, nomes de tabelas viram arquivos em disco e podem diferenciar caixa.
A melhor prevenção é adotar uma convenção simples: nomes de arquivos e pastas em minúsculas, sem espaços e sem acentos, usando hífen ou sublinhado. Isso evita surpresas em qualquer sistema operacional.

Linguagens de programação e SQL são case sensitive?
A maioria das linguagens usadas no Linux diferencia maiúsculas de minúsculas, mas a regra depende da linguagem, não do sistema operacional. Um mesmo código em C se comporta igual no Windows e no Linux quanto a nomes de variáveis; o que muda entre sistemas é a forma como os arquivos incluídos são encontrados.
| Linguagem | Case sensitive? | Detalhe |
|---|---|---|
| C e C++ | Sim | total e Total são variáveis diferentes |
| Java | Sim | Nome da classe pública deve bater com o arquivo |
| Python, JavaScript, Bash | Sim | Variáveis e funções diferenciam caixa |
| SQL (palavras-chave) | Não | SELECT e select funcionam igual |
| SQL (nomes e dados) | Depende | Varia conforme banco, configuração e collation |
No SQL, as palavras-chave nunca diferenciam caixa, mas identificadores e comparações de texto variam. O PostgreSQL converte nomes sem aspas para minúsculas e respeita a caixa de nomes entre aspas duplas. No MySQL, a sensibilidade de nomes de tabelas depende do sistema operacional e da variável lower_case_table_names, explicada na documentação oficial do MySQL. Já comparações de valores, como WHERE nome = 'ana', dependem da collation configurada.
Que tipo de sistema é o Linux?
O Linux é um kernel de sistema operacional livre e de código aberto, do tipo Unix-like, ou seja, inspirado no Unix e compatível com boa parte de seus padrões. Junto com ferramentas GNU, gerenciadores de pacotes e ambientes gráficos, ele forma as distribuições, como Ubuntu, Debian, Fedora e Arch Linux.
Por ser multiusuário e herdeiro do Unix, o Linux manteve a sensibilidade a maiúsculas desde o início. É também o sistema dominante em servidores e VPS, o que explica por que tantos erros de caixa só aparecem na hora do deploy.
Perguntas frequentes
O Linux é case sensitive em todas as distribuições?
Sim. Ubuntu, Debian, Fedora, Arch e as demais usam por padrão sistemas de arquivos case sensitive, como ext4, Btrfs ou XFS. A diferença só desaparece em partições FAT32/exFAT ou em pastas com casefold ativado.
Posso ter dois arquivos com o mesmo nome e caixas diferentes?
Pode, desde que estejam em um sistema de arquivos sensível a maiúsculas. Evite fazer isso em projetos compartilhados: ao copiar para Windows, macOS ou um pendrive, um dos arquivos será sobrescrito ou gerará conflito.
O Windows é case sensitive?
Não por padrão. O NTFS preserva a grafia, mas ignora a caixa nas buscas. É possível ativar a sensibilidade por pasta com o comando fsutil.exe file setCaseSensitiveInfo, recurso criado para o WSL.
A linguagem C e a linguagem Java são case sensitive?
Sim, ambas. Em C, main é diferente de Main; em Java, String é um tipo e string não existe, além de o nome da classe pública precisar coincidir com o nome do arquivo .java.
O SQL é case sensitive?
As palavras-chave não são. Nomes de tabelas, colunas e comparações de texto variam conforme o banco de dados, o sistema operacional e a collation; consulte a documentação do seu banco para saber o comportamento exato.
Ativar casefold apaga meus arquivos?
Ativar o recurso com mkfs.ext4 formata a partição e apaga tudo. Já o chattr +F só funciona em pasta vazia, então é preciso mover os arquivos para fora, aplicar o atributo e trazê-los de volta.









