Настройка учета регистра

Чувствительность к регистру определяет, обрабатываются ли прописные (FOO.txt) и строчные буквы (foo.txt) как уникальные (с учетом регистра) или эквивалентные (без учета регистра) в имени файла или каталога.

  • С учетом регистра: FOO.txt ≠ foo.txt ≠ Foo.txt
  • Без учета регистра: FOO.txt = foo.txt = Foo.txt

различия между Windows и учетом регистра Linux

при работе с файлами и каталогами Linux и Windows может потребоваться изменить способ обработки чувствительности к регистру.

Стандартное поведение:

  • Windows файловая система считает имена файлов и каталогов нечувствительными к регистру. FOO.txt и foo.txt будут считаться эквивалентными файлами.
  • Файловая система Linux обрабатывает имена файлов и каталогов с учетом регистра. FOO.txt и foo.txt будут рассматриваться как отдельные файлы.

Windows файловая система поддерживает настройку чувствительности к регистру с помощью флагов атрибутов на каталог. Хотя стандартное поведение не зависит от регистра, можно назначить флаг атрибута, чтобы сделать каталог чувствительным к регистру, чтобы он мог распознать файлы и папки Linux, которые могут отличаться только регистром.

это может быть особенно справедливо при подключении дисков к файловой системе подсистема Windows для Linux (WSL). При работе в файловой системе WSL вы используете Linux, поэтому файлы и каталоги по умолчанию обрабатываются как регистр.

Примечание

в прошлом, если у вас есть файлы, имена которых отличаются только регистром, Windows не удалось получить доступ к этим файлам, так как Windows приложения рассматривают файловую систему как нечувствительное к регистру и не могут различить файлы, имена которых отличаются только регистром. хотя в Windows Explorer будут показаны оба файла, будет открыт только один из них, независимо от выбранного.

Изменение чувствительности к регистру файлов и каталогов

ниже описано, как изменить каталог в файловой системе Windows так, чтобы он заменялся с учетом регистра, а также распознать файлы и папки, отличающиеся только регистром.

Предупреждение

некоторые Windows приложения с учетом предположения, что файловая система не учитывает регистр, не ’ используйте правильный регистр для ссылки на файлы. Например, ’ нередко приложения могут преобразовывать имена файлов для использования всех прописных и строчных букв. В каталогах, помеченных с учетом регистра, это означает, что эти приложения больше не имеют доступа к файлам. кроме того, если Windows приложения создают новые каталоги в дереве каталогов, где используются файлы с учетом регистра, то в этих каталогах не учитывается регистр. это может усложнить работу с Windows инструментами в каталогах с учетом регистра, поэтому следует соблюдать осторожность при Windows изменении параметров чувствительности к регистру в файловой системе.

Проверить чувствительность к текущему регистру

чтобы проверить, учитывается ли регистр в каталоге в Windows файловой системе, выполните команду:

fsutil.exe file queryCaseSensitiveInfo <path>

Замените на <path> путь к файлу. для каталога в файловой системе Windows (NTFS) <path> будет выглядеть так: C:\Users\user1\case-test или, если вы уже находится в user1 каталоге, можно просто запустить:fsutil.exe file setCaseSensitiveInfo case-test

Изменить чувствительность к регистру

поддержка учета регистра для каждого каталога началась в Windows 10, сборка 17107. в Windows 10 сборка 17692, поддержка была обновлена для включения проверки и изменения флага чувствительности к регистру для каталога из WSL. Чувствительность к регистру предоставляется с помощью расширенного атрибута с именем system.wsl_case_sensitive . Значение этого атрибута будет равно 0 для каталогов без учета регистра и 1 для каталогов с учетом регистра.

Чтобы изменить чувствительность каталога к регистру, необходимо запустить повышенные разрешения (Запуск от имени администратора). Изменение флага учета регистра также требует наличия “ атрибутов записи ” , “ Создание файлов ” , “ Создание папок ” и “ Удаление вложенных папок и файлов ” в каталоге. Дополнительные сведения об этом см. в разделе Устранение неполадок.

чтобы изменить каталог в файловой системе Windows с учетом регистра (foo ≠ foo), запустите PowerShell от имени администратора и выполните команду:

fsutil.exe file setCaseSensitiveInfo <path> enable

чтобы изменить каталог в Windows файловой системы на значение по умолчанию без учета регистра (foo = foo), запустите PowerShell от имени администратора и выполните команду:

fsutil.exe file setCaseSensitiveInfo <path> disable

Каталог должен быть пустым, чтобы изменить атрибут флага чувствительности к регистру в этом каталоге. Нельзя отключить флаг чувствительности к регистру для каталога, содержащего папки и файлы, имена которых отличаются только регистром.

Наследование чувствительности к регистру

При создании новых каталогов эти каталоги будут наследовать учет регистра от родительского каталога.

Предупреждение

При работе в режиме WSL 1 возникает исключение из этой политики наследования. Если распределение выполняется в режиме WSL 1, флаг учета регистра для каталога не наследуется; каталоги, созданные в каталоге с учетом регистра, автоматически не чувствительны к регистру. Необходимо явно пометить каждый каталог как чувствительный к регистру

Варианты чувствительности к регистру для подключения диска в файле конфигурации WSL

чувствительность к регистру можно управлять при подключении диска на подсистема Windows для Linux с помощью файла конфигурации WSL. Каждый установленный дистрибутив Linux может иметь собственный файл конфигурации WSL с именем /etc/wsl.conf . Дополнительные сведения о подключении диска см. в статье Начало работы с диском Linux в WSL 2.

Чтобы настроить параметр учета регистра в wsl.config файле при подключении диска, выполните следующие действия.

  1. Откройте дистрибутив Linux, который вы будете использовать (IE. Ubuntu).
  2. Перейдите в каталог вверх, пока не появится etc Папка (для этого может потребоваться доступ к cd ..home каталогу).
  3. перечислите файлы в etc каталоге, чтобы узнать, wsl.conf существует ли файл (используйте ls команду или explorer.exe . просмотрите каталог с помощью Windows проводника).
  4. Если wsl.conf файл еще не существует, его можно создать с помощью: sudo touch wsl.conf или, выполнив sudo nano /etc/wsl.conf , который создаст файл при сохранении из редактора nano.
  5. Для добавления в файл доступны следующие параметры wsl.config :

Значение по умолчанию: Включение учета регистра для каждого каталога.

[automount]
options = case = dir

Чувствительность к регистру недоступна (все каталоги на подключенных дисках NTFS будут учитываться без учета регистра):

[automount]
options = case = off

Обрабатывать все каталоги на диске (NTFS) с учетом регистра:

[automount]
options = case = force

Этот параметр поддерживается только для подключения дисков в дистрибутивах Linux, работающих как WSL 1, и может требовать ключ регистрации. Чтобы добавить ключ регистрации, можно использовать эту команду из командной строки с повышенными привилегиями (администратор): reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1 .

Чтобы эти изменения вступили в силу, необходимо перезапустить WSL после внесения каких либо изменений в wsl.conf файл. Вы можете перезапустить WSL с помощью команды: wsl --shutdown

Совет

Чтобы подключить диск (который использует подключаемый модуль файловой системы Дрвфс, чтобы сделать диск доступным в/mnt, например/МНТ/к,/МНТ/д и т. д.) с учетом конкретного параметра чувствительности к регистру для всех дисков, используйте, /etc/wsl.conf как описано выше. Чтобы задать параметры подключения по умолчанию для одного конкретного диска, используйте файл , чтобы указать эти параметры. Дополнительные параметры конфигурации WSL см. в статье Настройка параметров запуска дистрибутив с помощью вслконф.

Изменение чувствительности регистра на диске, подключенном к WSL распределению

Диски в формате NTFS, подключенные к дистрибутиву WSL, по умолчанию не учитывают регистр. Изменение чувствительности регистра для каталога на диске, подключенном к WSL дистрибутиву (IE. Ubuntu), выполните те же действия, которые перечислены выше для Windows файловой системы. (По умолчанию диски EXT4 будут учитываться с учетом регистра).

Чтобы включить чувствительность к регистру в каталоге (FOO ≠ foo), используйте команду:

fsutil.exe file setCaseSensitiveInfo <path> enable

Чтобы отключить чувствительность к регистру в каталоге и вернуться к регистру без учета регистра по умолчанию (FOO = foo), используйте команду:

fsutil.exe file setCaseSensitiveInfo <path> disable

Примечание

При изменении флага с учетом регистра для существующего каталога для подключенного диска во время работы WSL убедитесь, что WSL не содержит ссылок на этот каталог, иначе изменение не вступит в силу. Это означает, что каталог не должен быть открыт какими-либо процессами WSL, включая использование каталога (или его потомков) в качестве текущего рабочего каталога.

Настройка чувствительности к регистру с помощью Git

Система управления версиями Git также имеет параметр конфигурации, который можно использовать для настройки чувствительности к регистру для файлов, с которыми вы работаете. Если вы используете Git, может потребоваться изменить git config core.ignorecase параметр.

Чтобы задать для Git регистр с учетом регистра (FOO.txt ≠ foo.txt), введите:

git config core.ignorecase false

Чтобы задать для Git регистр без учета регистра (FOO.txt = foo.txt), введите:

git config core.ignorecase true

Установка этого параметра в значение false для файловой системы без учета регистра может привести к путанице с ошибками, ложным конфликтам или дублированию файлов.

Дополнительные сведения см. в документации по конфигурации Git.

Устранение неполадок

мой каталог содержит файлы с учетом регистра и требует учета регистра, но Windows средствам FS не будут распознавать эти файлы

чтобы использовать Windows средствах файловой системы для работы с каталогом Linux, который содержит файлы с разными вариантами, необходимо создать новый каталог с учетом регистра, а затем скопировать файлы в этот каталог (с помощью клона git или распаковать). Файлы останутся в смешанном регистре. (Обратите внимание, что если вы уже пробовали переместить файлы в каталог без учета регистра и возникли конфликты, скорее всего, некоторые файлы были перезаписаны и больше не будут доступны.)

Ошибка: Каталог не пуст

Нельзя изменить параметр чувствительности к регистру для каталога, который содержит другие файлы или каталоги. Попробуйте создать новый каталог, изменить параметр, а затем скопировать в него файлы в смешанных регистрах.

Ошибка: отказано в доступе

Убедитесь, что у вас есть “ разрешения запись атрибутов ” , “ Создание файлов ” , “ Создание папок ” и “ Удаление вложенных папок и файлов ” в каталоге, необходимого для изменения чувствительности к регистру. чтобы проверить эти параметры, откройте каталог в Windows проводнике (из командной строки выполните команду: explorer.exe . ). Щелкните правой кнопкой мыши каталог и выберите пункт Свойства , чтобы открыть документ окно свойств, а затем выберите изменить , чтобы просмотреть или изменить разрешения для каталога.

Properties windows to view or change permissions on NTFS directories

Ошибка: для этой операции требуется локальный том NTFS

Атрибут учета регистра можно задать только для каталогов в файловой системе NTFS. Каталоги в файловой системе WSL (Linux) по умолчанию чувствительны к регистру (и не могут задаваться без учета регистра с помощью средства fsutil.exe).

Дополнительные ресурсы