Ajuster le respect de la casse

Le respect de la casse détermine si les lettres majuscules (FOO.txt) et minuscules (foo.txt) sont gérées de façon distincte (respect de la casse) ou équivalente (non-respect de la casse) dans un nom de fichier ou un répertoire.

  • Sensible à la casse : FOO.txt ≠ foo.txt ≠ Foo.txt
  • Insensible à la casse : FOO.txt = foo.txt = Foo.txt

Différences de sensibilité à la casse entre Windows et Linux

Lorsque vous utilisez des fichiers et des répertoires Linux et Windows, vous devrez peut-être ajuster la façon dont le respect de la casse est géré.

Comportement standard :

  • Le système de fichiers Windows traite les noms de fichiers et de répertoires comme insensibles à la casse. FOO.txt et foo.txt seront traités comme des fichiers équivalents.
  • Le système de fichiers Linux traite les noms de fichiers et de répertoires comme sensibles à la casse. FOO.txt et foo.txt seront traités comme des fichiers distincts.

Le système de fichiers Windows prend en charge la définition de la sensibilité à la casse avec des indicateurs d’attribut par répertoire. Bien que le comportement standard soit insensible à la casse, vous pouvez affecter un indicateur d’attribut pour rendre un répertoire sensible à la casse, afin qu’il reconnaisse les fichiers et dossiers Linux qui peuvent différer uniquement selon la casse.

Cela peut être particulièrement vrai lors du montage de lecteurs sur le système de fichiers Sous-système Windows pour Linux (WSL). Lorsque vous travaillez dans le système de fichiers WSL, vous exécutez Linux. Par conséquent, les fichiers et les répertoires sont traités comme sensibles à la casse par défaut.

Remarque

Dans le passé, si vous aviez des fichiers dont le nom différait uniquement par la casse, ces fichiers ne pouvaient pas être accessibles par Windows, car les applications Windows traitent le système de fichiers comme insensible à la casse et ne peuvent pas faire la distinction entre les fichiers dont les noms diffèrent uniquement selon la casse. Bien que l’Explorateur de fichiers Windows affiche les deux fichiers, un seul s’ouvre, quel que soit le fichier que vous sélectionnez.

Modifier la sensibilité à la casse des fichiers et des répertoires

Les étapes suivantes expliquent comment modifier un répertoire sur le système de fichiers Windows afin qu’il soit sensible à la casse et qu’il reconnaisse les fichiers et dossiers qui diffèrent uniquement selon la casse.

Avertissement

Certaines applications Windows, en supposant que le système de fichiers est insensible à la casse, n’utilisent pas la casse correcte pour faire référence aux fichiers. Par exemple, il n’est pas rare que les applications transforment des noms de fichiers pour utiliser uniquement les majuscules ou les minuscules. Dans les répertoires marqués comme sensibles à la casse, cela signifie que ces applications ne peuvent plus accéder aux fichiers. En outre, si les applications Windows créent de nouveaux répertoires dans une arborescence de répertoires où vous utilisez des fichiers sensibles à la casse, ces répertoires ne sont pas sensibles à la casse. Cela peut rendre difficile l’utilisation des outils Windows dans des répertoires sensibles à la casse. Faites donc preuve de prudence lors de la modification des paramètres de sensibilité à la casse du système de fichiers Windows.

Inspecter la sensibilité à la casse actuelle

Pour vérifier si un répertoire est sensible à la casse dans le système de fichiers Windows, exécutez la commande :

fsutil.exe file queryCaseSensitiveInfo <path>

Remplacez <path> par le chemin de votre fichier. Pour un répertoire dans le système de fichiers Windows (NTFS), le <path> se présente comme suit : C:\Users\user1\case-test, ou si vous êtes déjà dans le répertoire user1, vous pouvez simplement exécuter : fsutil.exe file setCaseSensitiveInfo case-test

Modifier la sensibilité à la casse

La prise en charge de la sensibilité à la casse par répertoire a commencé dans Windows 10, build 17107. Dans Windows 10, build 17692, la prise en charge a été mise à jour pour inclure l’inspection et la modification de l’indicateur de sensibilité à la casse pour un répertoire à partir de WSL. La sensibilité à la casse est exposée à l’aide d’un attribut étendu nommé system.wsl_case_sensitive. La valeur de cet attribut sera 0 pour les répertoires insensibles à la casse et 1 pour les répertoires sensibles à la casse.

Pour modifier la sensibilité à la casse d’un répertoire, vous devez exécuter des autorisations élevées (exécuter en tant qu’administrateur). La modification de l’indicateur de sensibilité à la casse nécessite également les autorisations « Attributs d’écriture », « Créer des fichiers », « Créer des dossiers » et « Supprimer les sous-dossiers et les fichiers » sur le répertoire. Pour plus d’informations, consultez la section de résolution des problèmes.

Pour modifier un répertoire dans le système de fichiers Windows afin qu’il soit sensible à la casse (FOO ≠ foo), exécutez PowerShell en tant qu’administrateur et utilisez la commande :

fsutil.exe file setCaseSensitiveInfo <path> enable

Pour redéfinir un répertoire dans le système de fichiers Windows comme insensible à la casse par défaut (FOO = foo), exécutez PowerShell en tant qu’administrateur et utilisez la commande :

fsutil.exe file setCaseSensitiveInfo <path> disable

Un répertoire doit être vide pour modifier l’attribut indicateur de sensibilité à la casse sur ce répertoire. Vous ne pouvez pas désactiver l’indicateur de sensibilité à la casse sur un répertoire contenant des dossiers/fichiers dont les noms diffèrent uniquement selon la casse.

Héritage de la sensibilité à la casse

Lors de la création de nouveaux répertoires, ces répertoires héritent de la sensibilité à la casse de leur répertoire parent.

Avertissement

Il existe une exception à cette stratégie d’héritage lors de l’exécution en mode WSL 1. Lorsqu’une distribution s’exécute en mode WSL 1, l’indicateur de sensibilité à la casse par répertoire n’est pas hérité. Les répertoires créés dans un répertoire sensible à la casse ne sont pas automatiquement sensibles à la casse. Vous devez marquer explicitement chaque répertoire comme sensible à la casse

Options de sensibilité à la casse pour le montage d’un lecteur dans le fichier de configuration WSL

La sensibilité à la casse peut être gérée lors du montage d’un lecteur sur le Sous-système Windows pour Linux à l’aide du fichier de configuration WSL. Chaque distribution Linux que vous avez installée peut avoir son propre fichier de configuration WSL, appelé /etc/wsl.conf. Pour plus d’informations sur le montage d’un lecteur, consultez Bien démarrer avec le montage d’un disque Linux dans WSL 2.

Pour configurer l’option de sensibilité à la casse dans le fichier wsl.conf lors du montage d’un lecteur :

  1. Ouvrez la distribution Linux que vous allez utiliser (par exemple, Ubuntu).
  2. Modifiez les répertoires jusqu’à ce que le dossier etc s’affiche (vous devrez peut-être faire un cd .. à partir du répertoire home).
  3. Répertoriez les fichiers dans le répertoire etc pour voir si un fichier wsl.conf existe déjà (utilisez la commande ls, ou explorer.exe . pour afficher le répertoire avec l’Explorateur de fichiers Windows).
  4. Si le fichier wsl.conf n’existe pas encore, vous pouvez le créer à l’aide de : sudo touch wsl.conf ou en exécutant sudo nano /etc/wsl.conf, qui créera le fichier lors de son enregistrement à partir de l’éditeur Nano.
  5. Vous pouvez ajouter les options suivantes à votre fichier wsl.conf :

Paramètre par défaut : dir pour activer la sensibilité à la casse par répertoire.

[automount]
options = case = dir

Sensibilité à la casse non disponible (tous les répertoires sur les lecteurs NTFS montés sont insensibles à la casse) : off

[automount]
options = case = off

Traiter tous les répertoires sur le lecteur (NTFS) comme sensible à la casse : force

[automount]
options = case = force

Cette option est uniquement prise en charge pour le montage de lecteurs sur des distributions Linux s’exécutant en WSL 1 et peut nécessiter une clé d’inscription. Pour ajouter une clé d’inscription, vous pouvez utiliser cette commande à partir d’une invite de commandes avec élévation de privilèges (administrateur) : reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1.

Vous devez redémarrer WSL après avoir apporté des modifications au fichier wsl.conf pour que ces modifications prennent effet. Vous pouvez redémarrer WSL à l’aide de la commande : wsl --shutdown

Conseil

Pour monter un lecteur (qui utilise le plug-in DrvFs  filesystem pour rendre le disque disponible sous /mnt, tel que /mnt/c, /mnt/d, etc.) avec un paramètre de sensibilité à la casse spécifique pour TOUS les lecteurs, utilisez /etc/wsl.conf comme décrit ci-dessus. Pour définir les options de montage par défaut pour un lecteur spécifique, utilisez le fichier /etc/fstab pour spécifier ces options. Pour plus d’options de configuration WSL, consultez Configurer les paramètres de lancement par distribution avec wslconf.

Modification de la sensibilité à la casse sur un lecteur monté sur une distribution WSL

Les lecteurs au format NTFS montés sur une distribution WSL sont insensibles à la casse par défaut. Pour modifier le respect de la casse pour un répertoire sur un lecteur monté sur une distribution WSL (par exemple, Ubuntu), procédez comme indiqué ci-dessus pour le système de fichiers Windows. (Les lecteurs EXT4 sont sensibles à la casse par défaut).

Pour activer la sensibilité à la casse sur un répertoire (FOO ≠ foo), utilisez la commande :

fsutil.exe file setCaseSensitiveInfo <path> enable

Pour désactiver la sensibilité à la casse sur un répertoire et revenir au comportement par défaut insensible à la casse (FOO = foo), utilisez la commande :

fsutil.exe file setCaseSensitiveInfo <path> disable

Remarque

Si vous modifiez l’indicateur de sensibilité à la casse sur un répertoire existant pour un lecteur monté pendant l’exécution de WSL, vérifiez que WSL n’a aucune référence à ce répertoire, sinon la modification ne sera pas effective. Cela signifie que le répertoire ne doit pas être ouvert par des processus WSL, notamment l’utilisation du répertoire (ou ses descendants) comme répertoire de travail actuel.

Configurer la sensibilité à la casse avec Git

Le système de contrôle de version Git dispose également d’un paramètre de configuration qui peut être utilisé pour ajuster la sensibilité à la casse pour les fichiers avec lesquels vous travaillez. Si vous utilisez Git, vous pouvez ajuster le paramètre git config core.ignorecase.

Pour que Git soit sensible à la casse (FOO.txt ≠ foo.txt), entrez :

git config core.ignorecase false

Pour que Git soit insensible à la casse (FOO.txt = foo.txt), entrez :

git config core.ignorecase true

Définir cette option sur false sur un système de fichiers insensible à la casse peut entraîner des erreurs déroutantes, de faux conflits ou des fichiers en double.

Pour plus d’informations, consultez la documentation de configuration Git.

Résolution des problèmes

Mon répertoire contient des fichiers à casse mixte qui nécessitent une sensibilité à la casse, mais les outils du système de fichiers Windows ne reconnaissent pas ces fichiers.

Pour utiliser les outils du système de fichiers Windows pour travailler sur un répertoire Linux qui contient des fichiers à casse mixte, vous devez créer un répertoire et le définir comme sensible à la casse, puis copier les fichiers dans ce répertoire (en utilisant git clone ou untar). Les fichiers restent à casse mixte. (Notez que si vous avez déjà essayé de déplacer les fichiers vers un répertoire insensible à la casse et qu’il y a eu des conflits, certains fichiers ont probablement été remplacés et ne seront plus disponibles.)

Erreur : le répertoire n’est pas vide

Vous ne pouvez pas modifier le paramètre de sensibilité à la casse sur un répertoire qui contient d’autres fichiers ou répertoires. Essayez de créer un répertoire, de modifier le paramètre, puis de copier vos fichiers à casse mixte dans celui-ci.

Erreur : accès refusé

Assurez-vous de disposer des autorisations « Attributs d’écriture », « Créer des fichiers », « Créer des dossiers » et « Supprimer les sous-dossiers et les fichiers » sur le répertoire pour modifier la sensibilité à la casse. Pour vérifier ces paramètres, ouvrez le répertoire dans l’Explorateur de fichiers Windows (à partir de la ligne de commande, utilisez la commande : explorer.exe .). Cliquez avec le bouton droit sur le répertoire, sélectionnez Propriétés pour ouvrir la fenêtre Propriétés du document, puis sélectionnez Modifier pour afficher ou modifier les autorisations pour le répertoire.

Properties windows to view or change permissions on NTFS directories

Erreur : un volume NTFS local est requis pour cette opération

L’attribut de sensibilité à la casse ne peut être défini que sur les répertoires au sein d’un système de fichiers au format NTFS. Les répertoires du système de fichiers WSL (Linux) sont sensibles à la casse par défaut (et ne peuvent pas être définis comme insensibles à la casse à l’aide de l’outil fsutil.exe).

Ressources supplémentaires