Ajuste de la distinción de mayúsculas y minúsculas

La distinción entre mayúsculas y minúsculas determina si las letras mayúsculas (FOO.txt) y minúsculas (foo.txt) se controlan como distintas (distinguen mayúsculas de minúsculas) o equivalentes (sin distinción entre mayúsculas y minúsculas) en un nombre de archivo o directorio.

  • Distingue mayúsculas de minúsculas: FOO.txt ≠ foo.txt ≠ Foo.txt
  • Sin mayúsculas de minúsculas: FOO.text = foo.txt = Foo.txt

Diferencias entre la Windows y la confidencialidad de mayúsculas y minúsculas de Linux

Al trabajar con archivos y directorios de Linux y Windows, es posible que deba ajustar cómo se controla la confidencialidad de mayúsculas y minúsculas.

Comportamiento estándar:

  • Windows sistema de archivos trata los nombres de archivos y directorios como que no tienen en cuenta mayúsculas de minúsculas. FOO.txt y foo.txt se tratarán como archivos equivalentes.
  • El sistema de archivos de Linux trata los nombres de archivos y directorios como que distinguen mayúsculas de minúsculas. FOO.txt y foo.txt se tratarán como archivos distintos.

El Windows de archivos admite la configuración de la confidencialidad de mayúsculas y minúsculas con marcas de atributo por directorio. Aunque el comportamiento estándar no distingue mayúsculas de minúsculas, puede asignar una marca de atributo para que un directorio distingue mayúsculas de minúsculas, de modo que reconozca archivos y carpetas de Linux que solo pueden diferir en mayúsculas y minúsculas.

Esto puede ser especialmente cierto al montar unidades en el Subsistema de Windows para Linux de archivos (WSL). Cuando se trabaja en el sistema de archivos WSL, se ejecuta Linux, por lo que los archivos y directorios se tratan como que distinguen mayúsculas de minúsculas de forma predeterminada.

Nota

En el pasado, si tenía archivos cuyo nombre difiere solo por mayúsculas y minúsculas, Windows no podía acceder a estos archivos, porque las aplicaciones de Windows tratan el sistema de archivos como sin distinción entre mayúsculas y minúsculas y no pueden distinguir entre archivos cuyos nombres solo difieren en mayúsculas y minúsculas. Aunque Windows Explorador de archivos mostrará ambos archivos, solo se abrirá uno independientemente de cuál seleccione.

Cambiar la confidencialidad de mayúsculas y minúsculas de los archivos y directorios

En los pasos siguientes se explica cómo cambiar un directorio en el sistema de archivos Windows para que distingue mayúsculas de minúsculas y reconocerá archivos y carpetas que solo difieren por mayúsculas y minúsculas.

Advertencia

Algunas Windows aplicaciones, con la suposición de que el sistema de archivos no tiene en cuenta mayúsculas de minúsculas, no usan el caso correcto para hacer referencia a archivos. Por ejemplo, no es raro que las aplicaciones transformen los nombres de archivo para que usen todas las mayúsculas o minúsculas. En directorios marcados como distingue mayúsculas de minúsculas, esto significa que estas aplicaciones ya no pueden acceder a los archivos. Además, si las Windows crean directorios en un árbol de directorios en el que se usan archivos que distinguen mayúsculas de minúsculas, estos directorios no distinguen mayúsculas de minúsculas. Esto puede dificultar el trabajo con Windows en directorios con mayúsculas y minúsculas, por lo que debe tener cuidado al cambiar la configuración de la confidencialidad de mayúsculas Windows de mayúsculas y minúsculas del sistema de archivos.

Inspección de la confidencialidad actual de mayúsculas y minúsculas

Para comprobar si un directorio distingue mayúsculas de minúsculas Windows sistema de archivos, ejecute el comando :

fsutil.exe file queryCaseSensitiveInfo <path>

Reemplace <path> por la ruta de acceso del archivo. Para un directorio del sistema de Windows (NTFS), tendrá el siguiente aspecto: o si ya está en el <path>C:\Users\user1\case-testuser1 directorio, podría ejecutar:fsutil.exe file setCaseSensitiveInfo case-test

Modificación de la confidencialidad de mayúsculas y minúsculas

La compatibilidad con la confidencialidad de mayúsculas y minúsculas por directorio comenzó Windows 10, compilación 17107. En Windows 10, compilación 17692, se actualizó la compatibilidad para incluir la inspección y modificación de la marca de confidencialidad de mayúsculas y minúsculas para un directorio desde WSL. La confidencialidad de mayúsculas y minúsculas se expone mediante un atributo extendido denominado system.wsl_case_sensitive . El valor de este atributo será 0 para los directorios que no distinguen mayúsculas de minúsculas y 1 para los directorios que distinguen mayúsculas de minúsculas.

Para cambiar la confidencialidad de mayúsculas y minúsculas de un directorio, es necesario ejecutar permisos elevados (ejecutar como administrador). El cambio de la marca de confidencialidad de mayúsculas y minúsculas también requiere permisos de "Escribir atributos", "Crear archivos", "Crear carpetas" y "Eliminar subcarpetas y archivos" en el directorio. Consulte la sección de solución de problemas para obtener más información sobre este.

Para cambiar un directorio en el sistema de archivos Windows para que distingue mayúsculas de minúsculas (FOO ≠ foo), ejecute PowerShell como administrador y use el comando :

fsutil.exe file setCaseSensitiveInfo <path> enable

Para volver a cambiar un directorio del sistema de archivos Windows al valor predeterminado que no tiene en cuenta mayúsculas de minúsculas (FOO = foo), ejecute PowerShell como administrador y use el comando :

fsutil.exe file setCaseSensitiveInfo <path> disable

Un directorio debe estar vacío para cambiar el atributo de marca de confidencialidad de mayúsculas y minúsculas en ese directorio. No se puede deshabilitar la marca de confidencialidad de mayúsculas y minúsculas en un directorio que contenga carpetas o archivos cuyos nombres difieren solo por mayúsculas y minúsculas.

Herencia de la confidencialidad de mayúsculas y minúsculas

Al crear directorios nuevos, esos directorios heredarán la confidencialidad de mayúsculas y minúsculas de su directorio primario.

Advertencia

Hay una excepción a esta directiva de herencia cuando se ejecuta en el modo WSL 1. Cuando se ejecuta una distribución en modo WSL 1, no se hereda la marca de confidencialidad de mayúsculas y minúsculas por directorio; Los directorios creados en un directorio que distingue mayúsculas de minúsculas no distinguen entre mayúsculas y minúsculas automáticamente. Debe marcar explícitamente cada directorio como que distingue mayúsculas de minúsculas.

Opciones de confidencialidad de mayúsculas y minúsculas para montar una unidad en el archivo de configuración de WSL

La confidencialidad de mayúsculas y minúsculas se puede administrar al montar una unidad Subsistema de Windows para Linux mediante el archivo de configuración de WSL. Cada distribución de Linux que haya instalado puede tener su propio archivo de configuración de WSL, denominado /etc/wsl.conf . Para obtener más información sobre cómo montar una unidad, consulte Introducción al montaje de un disco Linux en WSL 2.

Para configurar la opción de confidencialidad de mayúsculas y wsl.config minúsculas en el archivo al montar una unidad:

  1. Abra la distribución de Linux que va a usar (es decir, Ubuntu).
  2. Cambie los directorios hasta que vea la carpeta (puede que necesite subir etccd .. desde el home directorio).
  3. Enumera los archivos del directorio para ver si ya existe un archivo (use el comando o para ver etcwsl.conf el directorio con lsexplorer.exe . Windows Explorador de archivos).
  4. Si el archivo aún no existe, puede crearlo mediante: o mediante la ejecución de , que creará el archivo al guardar desde wsl.confsudo touch wsl.conf el editor sudo nano /etc/wsl.conf Nano.
  5. Las siguientes opciones están disponibles para agregar a su wsl.config archivo:

Valor predeterminado: para habilitar la confidencialidad de mayúsculas y minúsculas por directorio.

[automount]
options = case = dir

La confidencialidad de mayúsculas y minúsculas no está disponible (todos los directorios de las unidades NTFS montadas no tendrán mayúsculas de minúsculas):

[automount]
options = case = off

Trate todos los directorios de la unidad (NTFS) como que distinguen mayúsculas de minúsculas:

[automount]
options = case = force

Esta opción solo se admite para montar unidades en distribuciones de Linux que se ejecutan como WSL 1 y puede requerir una clave de registro. Para agregar una clave de registro, puede usar este comando desde un símbolo del sistema con privilegios elevados (admin): reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1 .

Tendrá que reiniciar WSL después de realizar cambios en el archivo para wsl.conf que esos cambios sumen efecto. Puede reiniciar WSL mediante el comando : wsl --shutdown

Sugerencia

Para montar una unidad (que usa el complemento del sistema de archivos DrvFs para que el disco esté disponible en /mnt, como /mnt/c, /mnt/d, etc.) con una configuración específica de confidencialidad de mayúsculas y minúsculas para TODAS las unidades, use como se ha descrito /etc/wsl.conf anteriormente. Para establecer las opciones de montaje predeterminadas para una unidad específica, use el archivo para especificar estas opciones. Para más opciones de configuración de WSL, consulte Configuración de las opciones de inicio por distro con wslconf.

Cambio de la confidencialidad de mayúsculas y minúsculas en una unidad montada en una distribución de WSL

Las unidades con formato NTFS montadas en una distribución WSL no tendrán en cuenta mayúsculas de minúsculas de forma predeterminada. Para cambiar la confidencialidad de mayúsculas y minúsculas de un directorio en una unidad montada en una distribución WSL (es decir, Ubuntu), siga los mismos pasos indicados anteriormente para el Windows archivos. (Las unidades EXT4 distinguen mayúsculas de minúsculas de forma predeterminada).

Para habilitar la confidencialidad de mayúsculas y minúsculas en un directorio (FOO ≠ foo), use el comando :

fsutil.exe file setCaseSensitiveInfo <path> enable

Para deshabilitar la confidencialidad de mayúsculas y minúsculas en un directorio y volver al valor predeterminado sin mayúsculas y minúsculas (FOO = foo), use el comando :

fsutil.exe file setCaseSensitiveInfo <path> disable

Nota

Si cambia la marca que distingue mayúsculas de minúsculas en un directorio existente para una unidad montada mientras WSL se está ejecutando, asegúrese de que WSL no tiene referencias a ese directorio o de lo contrario el cambio no será efectivo. Esto significa que ningún proceso de WSL debe abrir el directorio, incluido el uso del directorio (o sus descendientes) como directorio de trabajo actual.

Configuración de la confidencialidad de mayúsculas y minúsculas con Git

El sistema de control de versiones de Git también tiene una configuración que se puede usar para ajustar la confidencialidad de mayúsculas y minúsculas de los archivos con los que está trabajando. Si usa Git, puede ajustar la git config core.ignorecase configuración.

Para establecer Git para que distingue mayúsculas de minúsculas (FOO.txt ≠ foo.txt), escriba:

git config core.ignorecase false

Para establecer Git para que no tenga en cuenta mayúsculas de minúsculas (FOO.txt = foo.txt), escriba:

git config core.ignorecase true

Establecer esta opción en false en un sistema de archivos sin mayúsculas de minúsculas puede provocar errores confusos, conflictos falsos o archivos duplicados.

Para más información, consulte la documentación de Git Config.

Solución de problemas

Mi directorio tiene archivos que tienen mayúsculas de minúsculas mixtas y requieren la confidencialidad de mayúsculas y minúsculas, Windows herramientas de FS no reconocerán estos archivos

Para usar las herramientas del sistema de archivos de Windows para trabajar en un directorio de Linux que contiene archivos de casos mixtos, deberá crear un directorio completamente nuevo y establecerlo para que tenga en cuenta las mayúsculas y minúsculas y, a continuación, copiar los archivos en ese directorio (mediante git clone o untar). Los archivos seguirán siendo de mayúsculas y minúsculas mixtas. (Tenga en cuenta que si ya ha intentado mover los archivos a un directorio sin mayúsculas y minúsculas y ha habido conflictos, es probable que haya algunos archivos que se sobrescribiron y ya no estarán disponibles).

Error: El directorio no está vacío

No se puede cambiar la configuración de confidencialidad de mayúsculas y minúsculas en un directorio que contenga otros archivos o directorios. Intente crear un nuevo directorio, cambiar la configuración y, a continuación, copiar los archivos de casos mixtos en él.

Error: Acceso denegado

Asegúrese de que tiene los permisos "Escribir atributos", "Crear archivos", "Crear carpetas" y "Eliminar subcarpetas y archivos" en el directorio necesario para cambiar la confidencialidad de mayúsculas y minúsculas. Para comprobar esta configuración, abra el directorio en Windows Explorador de archivos (desde la línea de comandos, use el comando : explorer.exe . ). Haga clic con el botón derecho en el directorio y seleccione Propiedades para abrir el ventana Propiedades documento y, a continuación, seleccione Editar para ver o cambiar los permisos del directorio.

Ventanas de propiedades para ver o cambiar permisos en directorios NTFS

Error: Se requiere un volumen NTFS local para esta operación.

El atributo de confidencialidad de mayúsculas y minúsculas solo se puede establecer en directorios dentro de un sistema de archivos con formato NTFS. Los directorios del sistema de archivos WSL (Linux) distinguen mayúsculas de minúsculas de forma predeterminada (y no se pueden establecer para que no distinguen mayúsculas de minúsculas mediante fsutil.exe herramienta).

Recursos adicionales