Windows 10 теперь предлагает дополнительную чувствительную к регистру файловую систему, такую же, как Linux и другие UNIX-подобные операционные системы. Все процессы Windows будут обрабатывать файлы и папки с учетом регистра, если вы включите эту функцию. Другими словами, они будут видеть «файл» и «файл» как два отдельных файла.
Как это работает
Это функция файловой системы NTFS, которую можно включить для каждого каталога. Это не относится ко всей вашей файловой системе, поэтому вы можете просто включить чувствительность к регистру для определенных папок, которые вы используете в целях разработки.
Чувствительность к регистру была добавлена в обновлении Windows 10 за апрель 2018 года. До этого было возможно монтировать папки Windows с учетом регистра в среде Bash on Windows, также известной как подсистема Windows для Linux. Это прекрасно работало в среде Linux, но это сбивало с толку нормальные приложения Windows. Теперь это функция уровня файловой системы, что означает, что все приложения Windows будут видеть файловую систему с учетом регистра и в этой папке.
Эта функция активируется с помощью команды fsutil.exe
, которую необходимо запустить из командной строки. Вы можете сделать это из командной строки или из окна PowerShell. При настройках по умолчанию папки, которые вы создаете в среде Linux, также автоматически настраиваются с учетом регистра.
Как установить каталог с учетом регистра
Для начала щелкните правой кнопкой мыши кнопку «Пуск» и выберите команду «PowerShell (Администратор)». Если вы предпочитаете использовать командную строку, вы можете выполнить поиск «Командная строка» в меню «Пуск», щелкнуть по нему правой кнопкой мыши и затем выбрать команду «Запуск от имени администратора». Команда работает одинаково, независимо от того, какую среду командной строки вы выберете.
Вам может не потребоваться доступ администратора для запуска этой команды, в зависимости от ваших разрешений. Технически, вам нужно разрешение «запись атрибутов» для каталога, который вы хотите изменить. В большинстве случаев это означает, что вам потребуются разрешения администратора, если вы хотите редактировать папку где-то за пределами вашей пользовательской папки, например, c: \ project, а не если вы хотите изменить папку где-то внутри вашей пользовательской папки, например как в c: \ users \ NAME \ project.
Прежде чем продолжить, убедитесь, что ни одно из запущенных программ Linux не ссылается на каталог, который вы собираетесь изменить. Вы не должны изменять флаг чувствительности к регистру в папке, когда к ней обращается программное обеспечение Linux. Если на каких-либо запущенных процессах Linux в данный момент открыт каталог или что-либо внутри этого каталога, даже если их текущий рабочий каталог, приложения Linux не распознают изменения и могут возникнуть проблемы.
Чтобы сделать папку чувствительной к регистру, введите следующую команду, заменив «C: \ folder» на путь к папке:
fsutil.exe файл setCaseSensitiveInfo C: \ папка enable
Если в пути к папке есть пробел, заключите весь путь в кавычки, например:
fsutil.exe файл setCaseSensitiveInfo "C: \ my folder" enable
Это не влияет на подпапки
Флаг чувствительности к регистру влияет только на конкретную папку, к которой вы его применяете. Он не наследуется автоматически подпапками этой папки.
Другими словами, если у вас есть папка с именем C: \ папка и в ней есть подпапки C: \ folder \ test и C: \ folder \ stuff, простое создание чувствительной к регистру папки C: \ не сделает также Подпапки «test» и «stuff» внутри него чувствительны к регистру. Вам нужно будет выполнить соответствующую команду fsutil
отдельно, чтобы все три папки были чувствительными к регистру.
Инструменты Linux по умолчанию создают регистрозависимые папки
Инструменты Linux, которые вы запускаете в подсистеме Windows для Linux (оболочка Bash), теперь создают папки с установленным флагом с учетом регистра. Таким образом, независимо от того, используете ли вы команду mkdir
для создания каталога в оболочке Bash, или инструмент разработки делает это за вас, созданный каталог автоматически устанавливается с учетом регистра, даже если вы создаете его на подключенном компьютере. Файловая система Windows.
Технически это происходит потому, что файловая система DrvFs для среды Linux использует флаг case = dir
по умолчанию. Опция case = dir
устанавливает среду Linux для соблюдения флага NTFS каждого каталога и для автоматической установки флага чувствительности к регистру для каталогов, созданных из среды Linux. Вы можете изменить эту опцию в своем файле wsl.conf, если хотите.
Пока вы создаете папки из среды Linux, они создаются с правильными настройками чувствительности к регистру, и вам никогда не нужно прикасаться к команде fsutil.exe.
Как проверить, является ли каталог чувствительным к регистру
Чтобы проверить, является ли каталог чувствительным к регистру, выполните следующую команду, заменив «C: \ folder» на путь к папке.
fsutil.exe файл queryCaseSensitiveInfo C: \ folder
Если для каталога включена чувствительность к регистру, вы увидите, что «Атрибут чувствителен к регистру в каталоге [путь]». Если каталог использует стандартную нечувствительность к регистру Windows, вы увидите, что «Атрибут чувствителен к регистру на каталог [путь] отключен. »
Как сделать каталог нечувствительным к регистру
Чтобы отменить изменения и сделать регистр без учета регистра еще раз (как это задумал Билл Гейтс), выполните следующую команду, заменив «C: \ folder» на путь к папке.
fsutil.exe файл setCaseSensitiveInfo C: \ отключение папки
Если вы попытаетесь отключить чувствительность к регистру для папки, содержащей файлы с именами, которые могут столкнуться, вы увидите сообщение «Ошибка: каталог не пустой». Вам нужно будет удалить или переименовать конфликтующие файлы, прежде чем продолжить.