3

Я использую 32-разрядную версию Cygwin в 64-разрядной версии Windows 7 Professional. У меня был установлен ключ реестра HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ObCaseInsensitive и все было хорошо: я мог получить обработку имен файлов с учетом истинного регистра, я мог создать FOO.txt и foo.txt в одном каталоге ,

Теперь, когда выпущена 64-разрядная версия Cygwin, я хочу попробовать ее на 64-разрядной версии Windows 7 Professional. Оказывается, что раздел реестра ObCaseInsensitive не влияет на 64-разрядную версию Cygwin, поскольку ключ, похоже, предназначен только для подсистемы Win32. Подсистема для приложений на основе UNIX (SUA) также недоступна в 64-разрядной версии Windows 7 Professional (требуется Enterprise или Ultimate). На самом деле, я даже не знаю, поможет ли вообще установка SUA.

Кто-нибудь знает, возможно ли получить 64-битную обработку имени файла с учетом регистра в 64-битной версии Windows 7 Professional?

2 ответа2

2

Чувствительность к регистру работает на x86_64-cygwin. Помните, что в 64-разрядных системах Windows фактически существует два реестра: один для 32-разрядных процессов и другой для 64-разрядных процессов. (В Cygwin они представлены в /proc/registry32 и /proc/registry64 .) Повторная установка ключа с помощью regtool -w и перезагрузка должны исправить это за вас.

0

Вы можете определить функцию, которая проверяет регистр целевого каталога (без необходимости изменения реестра Windows). Таким образом, в файле ~/.bash_functions следующий код:

unset cd_func2 2> /dev/null
unalias cd 2> /dev/null
cd_func2 () {

    echo $1 | grep -q '^/' && cd $1 && return 0
    for f in `echo $1 | sed -e 's/\// /g'` ; do
        _NEW_PATH=$(ls -a | grep -i ^"$f"$)
        [ "$_NEW_PATH" ] && cd $_NEW_PATH && continue
        echo "Directori inexistent $f" && return 1
    done
}

alias cd=cd_func2

РЕДАКТИРОВАТЬ: более общая обработка параметров.

Надеюсь, поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .