Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чувствительность к регистру определяет, обрабатываются ли буквы верхнего регистра (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 будет отображать оба файла, только один откроется независимо от выбранного вами файла.
Изменение конфиденциальности регистра файлов и каталогов
В следующих шагах объясняется, как изменить каталог в файловой системе 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.conf
при подключении диска:
- Откройте дистрибутив Linux, который вы будете использовать (т. е. Ubuntu).
- Переходите по каталогам, пока не увидите папку
etc
(для этого может понадобитьсяcd ..
из каталогаhome
). - Выведите список файлов в каталоге
etc
, чтобы узнать, существует ли файлwsl.conf
(используйте командуls
илиexplorer.exe .
для просмотра каталога с помощью проводника Windows). - Если файл
wsl.conf
еще не существует, его можно создать с помощью:sudo touch wsl.conf
или запустивsudo nano /etc/wsl.conf
, который создаст файл при сохранении из редактора Nano. - Для добавления в файл
wsl.conf
доступны следующие параметры:
параметр по умолчанию: dir
для включения конфиденциальности регистра для каждого каталога.
[automount]
options = case = dir
Конфиденциальность регистра недоступна (все каталоги на подключенных дисках NTFS будут нечувствительными к регистру): off
[automount]
options = case = off
обрабатывать все каталоги на диске NTFS как регистрочувствительные: force
[automount]
options = case = force
Этот параметр поддерживается только для подключения дисков в дистрибутивах Linux, работающих как WSL 1, и может потребоваться ключ регистрации. Чтобы добавить ключ регистрации, эту команду можно использовать из командной строки с повышенными привилегиями (администратора): reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1
.
После внесения изменений в файл wsl.conf
необходимо перезапустить WSL, чтобы эти изменения вступили в силу. WSL можно перезапустить с помощью команды: wsl --shutdown
Совет
Чтобы подключить диск (который использует подключаемый модуль файловой системы DrvFs для обеспечения доступности диска в разделе /mnt, например /mnt/c, /mnt/d и т. д.) с определенным параметром конфиденциальности регистра для всех дисков, используйте /etc/wsl.conf
, как описано выше. Чтобы задать параметры подключения по умолчанию для одного конкретного диска, используйте файл /etc/fstab
, чтобы указать эти параметры.
Дополнительные параметры конфигурации WSL см. в разделе Настройка параметров запуска для каждого дистрибутива с помощью wslconf.
Изменение регистрозависимости на диске, подключенном к дистрибутиву WSL
Диски с форматированием NTFS, подключенные к дистрибутиву WSL, по умолчанию будут нечувствительными к регистру. Чтобы изменить регистрозависимость для каталога на диске, подключенном к дистрибутиву WSL (т. е. 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 Config.
Устранение неполадок
В моем каталоге есть файлы, которые являются смешанными и требуют конфиденциальности регистра, но средства Windows FS не распознают эти файлы.
Чтобы использовать средства файловой системы Windows для работы с каталогом Linux, который содержит файлы смешанного регистра, необходимо создать совершенно новый каталог и задать его как чувствительный к регистру, а затем скопировать файлы в этот каталог, например, с помощью git clone или команды untar. Файлы останутся смешанными. (Обратите внимание, что если вы уже пытались переместить файлы в каталог без учета регистра и существовали конфликты, скорее всего, некоторые файлы были перезаписаны и больше не будут доступны.)
Ошибка: каталог не пуст
Невозможно изменить настройку регистрозависимости на директории, которая содержит другие файлы или директории. Попробуйте создать новую директорию, изменить настройки, а затем скопировать в неё файлы смешанного регистра.
Ошибка: доступ запрещен
Убедитесь, что у вас есть разрешения "Запись атрибутов", "Создание файлов", "Создание папок" и "Удаление вложенных папок и файлов", необходимых для изменения конфиденциальности регистра. Чтобы проверить эти параметры, откройте каталог в проводнике Windows (из командной строки используйте команду: explorer.exe .
). Щелкните каталог правой кнопкой мыши и выберите свойства, чтобы открыть окно свойств документа, а затем выберите Изменить, чтобы просмотреть или изменить разрешения для каталога.
Ошибка: для этой операции требуется локальный том NTFS.
Атрибут чувствительности к регистру можно задать только в каталогах в файловой системе, отформатированной на NTFS. Каталоги в файловой системе WSL (Linux) по умолчанию чувствительны к регистру (и не могут быть сделаны нечувствительными к регистру с помощью инструмента fsutil.exe).
Дополнительные ресурсы
Windows Subsystem for Linux