Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A diferenciação de maiúsculas (FOO.txt) e minúsculas (foo.txt) é tratada como distinta (sensível a maiúsculas e minúsculas) ou equivalente (não sensível a maiúsculas e minúsculas) em nomes de ficheiros ou diretórios.
- Sensível a maiúsculas e minúsculas: FOO.txt ≠ foo.txt ≠ Foo.txt
- Não diferencia maiúsculas de minúsculas: FOO.txt = foo.txt = Foo.txt
Diferenças na sensibilidade a maiúsculas e minúsculas entre o Windows e o Linux
Ao trabalhar com arquivos e diretórios Linux e Windows, talvez seja necessário ajustar como a diferenciação de maiúsculas e minúsculas é tratada.
Comportamento padrão:
- O sistema de arquivos do Windows trata nomes de arquivos e diretórios como insensíveis a maiúsculas e minúsculas. FOO.txt e foo.txt serão tratados como ficheiros equivalentes.
- O sistema de arquivos Linux trata nomes de arquivos e diretórios como diferenciadores de maiúsculas e minúsculas. FOO.txt e foo.txt serão tratados como ficheiros distintos.
O sistema de arquivos do Windows oferece suporte à configuração da sensibilidade a maiúsculas e minúsculas com sinalizadores de atributo por diretório. Embora o comportamento padrão seja não diferenciar entre maiúsculas e minúsculas, pode-se atribuir um flag de atributo para tornar um diretório sensível a maiúsculas e minúsculas, permitindo que reconheça 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 WSL (Windows Subsystem for Linux). 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.
Observação
No passado, se você tivesse arquivos cujo nome diferia apenas por maiúsculas e minúsculas, esses arquivos não podiam ser acessados pelo Windows, porque os aplicativos do Windows tratam o sistema de arquivos como insensível a maiúsculas e minúsculas e não podem distinguir entre arquivos cujos nomes diferem apenas em maiúsculas e minúsculas. Embora o Explorador de Arquivos do Windows mostre os dois arquivos, apenas um será aberto, independentemente do que você selecionar.
Alterar a diferenciação de maiúsculas e minúsculas de arquivos e diretórios
As etapas a seguir explicam como alterar um diretório no sistema de arquivos do Windows para que ele diferencie maiúsculas de minúsculas e reconheça arquivos e pastas que diferem apenas por maiúsculas e minúsculas.
Advertência
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 as maiúsculas e minúsculas corretas para se referir aos arquivos. Por exemplo, não é incomum que aplicativos transformem nomes de arquivos para usar todas as letras maiúsculas ou minúsculas. Em diretórios marcados como diferenciadores de 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 diretórios não diferenciam maiúsculas de minúsculas. Isso pode dificultar o trabalho com ferramentas do Windows em diretórios sensíveis a maiúsculas e minúsculas, portanto, tenha cuidado ao alterar as configurações de diferenciação de maiúsculas e minúsculas do sistema de arquivos do Windows.
Inspecionar a diferenciação atual de maiúsculas e minúsculas
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), o <path> terá a seguinte aparência: C:\Users\user1\case-test ou se você já estiver no diretório user1, você pode simplesmente executar: fsutil.exe file setCaseSensitiveInfo case-test
Modificar a diferenciação de maiúsculas e minúsculas
O suporte para diferenciação de maiúsculas e minúsculas por diretório começou no Windows 10, build 17107. No Windows 10, compilação 17692, o suporte foi atualizado para incluir a inspeção e modificação do sinalizador de diferenciação de maiúsculas e minúsculas para um diretório de dentro do WSL. A diferenciação de maiúsculas e minúsculas é exposta usando um atributo estendido chamado system.wsl_case_sensitive. O valor deste 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 de maiúsculas e minúsculas de um diretório requer que você execute permissões elevadas (executar como administrador). Alterar o sinalizador de diferenciação de maiúsculas e minúsculas também requer as permissões "Escrever atributos", "Criar arquivos", "Criar pastas" e "Eliminar subpastas e ficheiros" no diretório. Consulte a secção de resoluçã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 de sinalizador de diferenciação de maiúsculas e minúsculas nesse diretório. Não é possível desativar o sinalizador de sensibilidade a maiúsculas e minúsculas num diretório que contenha pastas/arquivos cujos nomes diferem apenas por maiúsculas e minúsculas.
Herança sensível a maiúsculas e minúsculas
Ao criar novos diretórios, esses diretórios herdarão a diferenciação de maiúsculas e minúsculas de seu diretório pai.
Advertência
Há uma exceção a essa política de herança ao executar no modo WSL 1. Quando uma distribuição é executada no modo WSL 1, o sinalizador de sensibilidade a maiúsculas e minúsculas por diretório não é herdado; os diretórios criados num diretório sensível a maiúsculas e minúsculas não se tornam automaticamente sensíveis a elas. Você deve marcar explicitamente cada diretório como sensível a maiúsculas/minúsculas
Opções de sensibilidade a maiúsculas e minúsculas para a montagem de uma unidade no arquivo de configuração WSL
A diferenciação de maiúsculas e minúsculas pode ser gerenciada ao montar uma unidade no Subsistema Windows para Linux usando o arquivo de configuração WSL. Cada distribuição Linux que você instalou 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 sensibilidade a maiúsculas/minúsculas no arquivo wsl.conf ao montar um disco:
- Abra a distribuição Linux que você usará (ou seja. Ubuntu).
- Altere os diretórios até ver a pasta
etc(isso pode exigir que vocêcd ..a partir do diretóriohome). - Liste os arquivos no diretório
etcpara ver se já existe um arquivowsl.conf(use o comandolsouexplorer.exe .para exibir o diretório com o Explorador de Arquivos do Windows). - Se o arquivo
wsl.confainda não existir, você pode criá-lo usando:sudo touch wsl.confou executandosudo nano /etc/wsl.conf, que criará o arquivo ao salvar do editor Nano. - As seguintes opções estão disponíveis para você adicionar ao seu arquivo
wsl.conf:
Configuração padrão: off indisponível para a sensibilidade a maiúsculas e minúsculas (todos os diretórios em unidades NTFS montadas serão insensíveis a maiúsculas e minúsculas).
[automount]
options = case = off
Ativando a diferenciação de maiúsculas e minúsculas por diretório: dir
[automount]
options = case = dir
Trate todos os diretórios na unidade (NTFS) como sensíveis a maiúsculas e minúsculas: force
[automount]
options = case = force
Esta opção só é suportada para a montagem de unidades em distribuições Linux que executam como WSL 1 e pode exigir uma chave de registo. Para adicionar uma chave de registo, pode utilizar este comando a partir de uma linha de comandos elevada (admin): reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1.
Você precisará reiniciar o WSL depois de fazer quaisquer 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 plug-in do sistema de arquivos DrvFs para disponibilizar o disco em /mnt, como /mnt/c, /mnt/d, etc.) com uma configuração específica de sensibilidade a maiúsculas para TODAS as unidades, conforme descrito anteriormente, use /etc/wsl.conf. Para definir as opções de montagem padrão para uma unidade específica, use o /etc/fstab para especificar essas opções.
Para obter mais opções de configuração WSL, consulte Configurar configurações de inicialização por distro com wslconf.
Alterar a sensibilidade a maiúsculas numa unidade montada numa distribuição WSL
As unidades formatadas em NTFS montadas numa distribuição WSL não diferenciam maiúsculas de minúsculas por padrão. Para alterar a diferenciação de maiúsculas e minúsculas de um diretório em uma unidade montada em uma distribuição WSL (ou seja, Ubuntu), siga os mesmos passos listados acima para o sistema de arquivos do Windows. (Os discos EXT4 serão sensíveis a maiúsculas e minúsculas por padrão).
Para habilitar a diferenciação de maiúsculas e minúsculas em um diretório (FOO ≠ foo), use o comando:
fsutil.exe file setCaseSensitiveInfo <path> enable
Para desativar a diferenciação de maiúsculas e minúsculas em um diretório e retornar ao padrão que não diferencia maiúsculas de minúsculas (FOO = foo), use o comando:
fsutil.exe file setCaseSensitiveInfo <path> disable
Observação
Se você alterar o sinalizador sensível a 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 ou 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 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 do Git também tem uma definição de configuração que pode ser usada para ajustar a diferenciação de maiúsculas e minúsculas para os arquivos com os quais você está trabalhando. Se você estiver usando o Git, convém ajustar a configuração git config core.ignorecase.
Para definir o Git como sensível a maiúsculas e minúsculas (FOO.txt ≠ foo.txt), digite:
git config core.ignorecase false
Para definir o Git como não diferenciando maiúsculas de minúsculas (FOO.txt = foo.txt), digite:
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 causar erros confusos, conflitos falsos ou arquivos duplicados.
Para obter mais informações, consulte a documentação do Git Config.
Solução de problemas
O meu diretório tem ficheiros que são de maiúsculas e minúsculas misturadas e exigem sensibilidade a maiúsculas e minúsculas, mas as ferramentas do sistema de ficheiros do Windows não reconhecerão estes ficheiros.
Para utilizar as ferramentas do sistema de ficheiros do Windows para trabalhar numa diretoria Linux que contenha ficheiros com mistura de maiúsculas e minúsculas, terá de criar uma diretoria nova e configurá-la como sensível a maiúsculas e minúsculas, e depois copiar os ficheiros para essa diretoria (usando git clone ou untar). Os arquivos continuarão com letras maiúsculas e minúsculas. (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 houve 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 diferenciação de maiúsculas e minúsculas em um diretório que contenha outros arquivos ou diretórios. Tente criar um novo diretório, alterar a configuração e, em seguida, copiar seus arquivos de casos mistos para ele.
Erro: Acesso negado
Certifique-se de ter as permissões "Atributos de gravação", "Criar ficheiros", "Criar pastas" e "Eliminar subpastas e ficheiros" no diretório necessário para alterar a diferenciação de 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, em seguida, selecione Editar para exibir ou alterar as permissões para o diretório.
Erro: Um volume NTFS local é necessário para esta operação
O atributo de diferenciação de 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 como insensíveis a maiúsculas e minúsculas usando a ferramenta fsutil.exe).
Recursos adicionais
Windows Subsystem for Linux