Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A diferenciação entre maiúsculas e minúsculas determina se letras maiúsculas (FOO.txt) e minúsculas (foo.txt) são tratadas como distintas (diferenciação entre maiúsculas e minúsculas) ou equivalentes (não diferenciação entre maiúsculas e minúsculas) em um nome de arquivo ou diretório.
- Diferencia maiúsculas de minúsculas: FOO.txt ≠ foo.txt ≠ Foo.txt
- Não diferencia maiúsculas de minúsculas: FOO.txt = foo.txt = Foo.txt
Diferenças entre a diferenciação entre maiúsculas e minúsculas do Windows e do Linux
Ao trabalhar com arquivos e diretórios do Linux e do Windows, talvez seja necessário ajustar como a sensibilidade a maiúsculas e minúsculas é tratada.
Comportamento padrão:
- O sistema de arquivos do Windows trata os nomes de arquivos e diretórios como insensíveis a maiúsculas e minúsculas. FOO.txt e foo.txt serão tratados como arquivos equivalentes.
- O sistema de arquivos Linux trata nomes de arquivos e diretórios como diferenciação entre maiúsculas e minúsculas. FOO.txt e foo.txt serão tratados como arquivos distintos.
O sistema de arquivos do Windows dá suporte à configuração de diferenciação entre maiúsculas e minúsculas com sinalizadores de atributo por diretório. Embora o comportamento padrão seja não diferenciar maiúsculas de minúsculas, você pode atribuir um sinalizador de atributo para fazer com que um diretório diferencie maiúsculas de minúsculas, de modo que ele reconheça os arquivos e pastas do Linux que podem diferir apenas por maiúsculas e minúsculas.
Isso pode ser especialmente verdadeiro ao montar unidades no sistema de arquivos do Subsistema do Windows para Linux (WSL). Ao trabalhar no sistema de arquivos WSL, você está executando o Linux, portanto, arquivos e diretórios são tratados como sensíveis a maiúsculas e minúsculas por padrão.
Nota
No passado, se você tivesse arquivos cujo nome diferisse apenas por maiúsculas e minúsculas, esses arquivos não poderiam ser acessados pelo Windows, porque os aplicativos do Windows tratam o sistema de arquivos como não diferenciação entre maiúsculas e minúsculas e não conseguem distinguir entre arquivos cujos nomes diferem apenas por maiúsculas e minúsculas. Embora o Explorador de Arquivos do Windows mostre ambos os arquivos, apenas um será aberto independentemente do qual você selecionar.
Alterar a diferenciação entre maiúsculas e minúsculas de arquivos e diretórios
As etapas a seguir explicam como modificar um diretório no sistema de arquivos do Windows para que seja sensível a maiúsculas e minúsculas e reconheça arquivos e pastas que diferem somente por maiúsculas e minúsculas.
Aviso
Alguns aplicativos do Windows, usando a suposição de que o sistema de arquivos não diferencia maiúsculas de minúsculas, não usam o caso correto para se referir aos arquivos. Por exemplo, não é incomum que aplicativos transformem nomes de arquivo para usar todas as maiúsculas ou minúsculas. Em diretórios marcados como sensíveis a maiúsculas e minúsculas, isso significa que esses aplicativos não podem mais acessar os arquivos. Além disso, se os aplicativos do Windows criarem novos diretórios em uma árvore de diretórios onde você estiver usando arquivos que diferenciam maiúsculas de minúsculas, esses novos diretórios não diferenciam maiúsculas de minúsculas. Isso pode dificultar o trabalho com ferramentas do Windows em diretórios confidenciais, portanto, tenha cuidado ao alterar as configurações de diferenciação de maiúsculas e minúsculas do sistema de arquivos do Windows.
Inspecionar diferenciação entre maiúsculas e minúsculas atual
Para verificar se um diretório diferencia maiúsculas de minúsculas no sistema de arquivos do Windows, execute o comando:
fsutil.exe file queryCaseSensitiveInfo <path>
Substitua <path>
pelo caminho do arquivo. Para um diretório no sistema de arquivos do Windows (NTFS), a <path>
terá a seguinte aparência: C:\Users\user1\case-test
ou se você já estiver no diretório user1
, basta executar: fsutil.exe file setCaseSensitiveInfo case-test
Modificar diferenciação entre maiúsculas e minúsculas
O suporte à diferenciação de maiúsculas e minúsculas por diretório começou no Windows 10, build 17107. No Windows 10, build 17692, o suporte foi atualizado para incluir a inspeção e a modificação do sinalizador de diferenciação de maiúsculas e minúsculas para um diretório de dentro do WSL. A diferenciação entre maiúsculas e minúsculas é exposta usando um atributo estendido chamado system.wsl_case_sensitive
. O valor desse atributo será 0 para diretórios insensíveis a maiúsculas e minúsculas e 1 para diretórios sensíveis a maiúsculas e minúsculas.
Alterar a diferenciação entre maiúsculas e minúsculas de um diretório requer que você execute permissões elevadas (executar como Administrador). A alteração do sinalizador de diferenciação entre maiúsculas e minúsculas também requer permissões "Gravar atributos", "Criar arquivos", "Criar pastas" e "Excluir subpastas e arquivos" no diretório. Consulte a seção de solução de problemas para obter mais informações sobre este.
Para alterar um diretório no sistema de arquivos do Windows para que ele diferencie maiúsculas de minúsculas (FOO ≠ foo), execute o PowerShell como Administrador e use o comando:
fsutil.exe file setCaseSensitiveInfo <path> enable
Para alterar um diretório no sistema de arquivos do Windows de volta para o padrão que não diferencia maiúsculas de minúsculas (FOO = foo), execute o PowerShell como Administrador e use o comando:
fsutil.exe file setCaseSensitiveInfo <path> disable
Um diretório deve estar vazio para alterar o atributo sinalizador de sensibilidade a maiúsculas e minúsculas nesse diretório. Você não pode desabilitar o sinalizador de diferenciação entre maiúsculas e minúsculas em um diretório que contenha pastas/arquivos cujos nomes diferem apenas por maiúsculas e minúsculas.
Herança de diferenciação de maiúsculas e minúsculas
Ao criar novos diretórios, eles herdarão a diferenciação entre maiúsculas e minúsculas do diretório pai.
Aviso
Há uma exceção a essa política de herança ao executar no modo WSL 1. Quando uma distribuição está em execução no modo WSL 1, o sinalizador de diferenciação entre maiúsculas e minúsculas por diretório não é herdado; diretórios criados em um diretório que diferencia maiúsculas de minúsculas não são automaticamente diferenciação entre maiúsculas e minúsculas. Você deve marcar explicitamente cada diretório como diferenciando maiúsculas de minúsculas
Opções de diferenciação de maiúsculas e minúsculas para montagem de uma unidade no arquivo de configuração da WSL
A diferenciação entre maiúsculas e minúsculas pode ser gerenciada ao montar uma unidade no Subsistema do Windows para Linux usando o arquivo de configuração do WSL. Cada distribuição do Linux instalada pode ter seu próprio arquivo de configuração WSL, chamado /etc/wsl.conf
. Para obter mais informações sobre como montar uma unidade, consulte Introdução à montagem de um disco Linux no WSL 2.
Para configurar a opção de diferenciação entre maiúsculas e minúsculas no arquivo wsl.conf
ao montar uma unidade:
- Abra a distribuição do Linux que você usará (ou seja, Ubuntu).
- Altere os diretórios até ver a pasta
etc
(pode ser necessáriocd ..
a partir do diretóriohome
). - Liste os arquivos no diretório
etc
para ver se já existe um arquivowsl.conf
(use o comandols
ouexplorer.exe .
para exibir o diretório com o Explorador de Arquivos do Windows). - Se o arquivo de
wsl.conf
ainda não existir, você poderá criá-lo usando:sudo touch wsl.conf
ou executandosudo nano /etc/wsl.conf
, o que criará o arquivo ao salvar do editor nano. - As seguintes opções estão disponíveis para você adicionar ao arquivo
wsl.conf
:
Configuração padrão: dir
para habilitar a diferenciação entre maiúsculas e minúsculas por diretório.
[automount]
options = case = dir
Diferenciação de maiúsculas e minúsculas indisponível (todos os diretórios em unidades NTFS montadas não diferenciam maiúsculas de minúsculas): off
[automount]
options = case = off
Tratar todos os diretórios na unidade (NTFS) como diferenciação entre maiúsculas e minúsculas: force
[automount]
options = case = force
Essa opção só tem suporte para montar unidades em distribuições do Linux em execução como WSL 1 e pode exigir uma chave de registro. Para adicionar uma chave de registro, você pode usar esse comando em um prompt de comando elevado (administrador): reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1
.
Você precisará reiniciar o WSL depois de fazer alterações no arquivo wsl.conf
para que essas alterações entrem em vigor. Você pode reiniciar o WSL usando o comando: wsl --shutdown
Dica
Para montar uma unidade (que usa o plugin de sistema de arquivos DrvFs para disponibilizar o disco em /mnt, como /mnt/c, /mnt/d, etc.) com uma configuração específica de diferenciação entre maiúsculas e minúsculas para TODAS as unidades, use /etc/wsl.conf
conforme descrito acima. Para definir as opções de montagem padrão para uma unidade específica, use o arquivo /etc/fstab
para especificar essas opções.
Para obter mais opções de configuração do WSL, consulte Definir configurações de inicialização por distribuição com wslconf.
Alterando a diferenciação entre maiúsculas e minúsculas em uma unidade montada em uma distribuição WSL
Unidades formatadas em NTFS montadas em uma distribuição WSL não diferenciam maiúsculas de minúsculas por padrão. Para alterar a sensibilidade a maiúsculas e minúsculas de um diretório em uma unidade montada em uma distribuição WSL (ou seja, Ubuntu), siga as mesmas etapas listadas acima para o sistema de arquivos do Windows. (Unidades EXT4 diferenciam maiúsculas de minúsculas por padrão).
Para habilitar a diferenciação entre maiúsculas e minúsculas em um diretório (FOO ≠ foo), use o comando:
fsutil.exe file setCaseSensitiveInfo <path> enable
Para desabilitar a diferenciação de maiúsculas e minúsculas em um diretório e retornar ao padrão insensível a maiúsculas e minúsculas (FOO = foo), use o comando:
fsutil.exe file setCaseSensitiveInfo <path> disable
Nota
Se você alterar o sinalizador de diferenciação entre maiúsculas e minúsculas em um diretório existente para uma unidade montada enquanto o WSL estiver em execução, verifique se o WSL não tem referências a esse diretório caso contrário, a alteração não será efetiva. Isso significa que o diretório não deve ser aberto por nenhum processo WSL, incluindo o uso do diretório (ou de seus descendentes) como o diretório de trabalho atual.
Configurar a diferenciação de maiúsculas e minúsculas com o Git
O sistema de controle de versão Git também tem uma configuração que pode ser usada para ajustar a diferenciação entre maiúsculas e minúsculas dos arquivos com os quais você está trabalhando. Se você estiver usando o Git, convém ajustar a configuração git config core.ignorecase
.
Para configurar o Git para ser sensível a maiúsculas e minúsculas (FOO.txt ≠ foo.txt), insira:
git config core.ignorecase false
Para definir o Git como não diferencia maiúsculas de minúsculas (FOO.txt = foo.txt), insira:
git config core.ignorecase true
Definir essa opção como false em um sistema de arquivos que não diferencia maiúsculas de minúsculas pode levar a erros confusos, conflitos falsos ou arquivos duplicados.
Para obter mais informações, consulte a documentação de configuração do Git .
Resolução de problemas
Meu diretório tem arquivos com maiúsculas e minúsculas misturadas e requer diferenciação entre maiúsculas e minúsculas, mas as ferramentas do Windows FS não reconhecem esses arquivos
Para usar as ferramentas do sistema de arquivos do Windows para trabalhar em um diretório Linux que contenha arquivos com maiúsculas e minúsculas mistos, você precisará criar um diretório completamente novo e configurá-lo para ser sensível a maiúsculas, e então copiar os arquivos para esse diretório (usando git clone ou untar). Os arquivos permanecerão com maiúsculas e minúsculas misturadas. (Observe que se você já tentou mover os arquivos para um diretório que não diferencia maiúsculas de minúsculas e houve conflitos, provavelmente havia alguns arquivos que foram substituídos e não estarão mais disponíveis.)
Erro: o diretório não está vazio
Não é possível alterar a configuração de sensibilidade a maiúsculas e minúsculas em um diretório que contém outros arquivos ou diretórios. Tente criar um novo diretório, alterar a configuração e, em seguida, copiar seus arquivos de caso misto para ele.
Erro: Acesso negado
Verifique se você tem as permissões "Gravar atributos", "Criar arquivos", "Criar pastas" e "Excluir subpastas e arquivos" no diretório necessário para alterar a diferenciação entre maiúsculas e minúsculas. Para verificar essas configurações, abra o diretório no Explorador de Arquivos do Windows (na linha de comando, use o comando: explorer.exe .
). Clique com o botão direito do mouse no diretório e selecione Propriedades para abrir a janela Propriedades do Documento e selecione Editar para exibir ou alterar permissões para o diretório.
Erro: um volume NTFS local é necessário para esta operação
O atributo de diferenciação entre maiúsculas e minúsculas só pode ser definido em diretórios dentro de um sistema de arquivos formatado em NTFS. Os diretórios no sistema de arquivos WSL (Linux) diferenciam maiúsculas de minúsculas por padrão (e não podem ser definidos para não diferenciar maiúsculas de minúsculas usando a ferramenta fsutil.exe).
Recursos adicionais
Windows Subsystem for Linux