Est-il possible d'obtenir une gestion des noms de fichiers sensible à la casse dans Cygwin 64 bits sous Windows 7 Professional 64 bits?

3

J'utilise Cygwin 32 bits sous Windows 7 Professional 64 bits. J'avais la HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ObCaseInsensitiveclé de registre définie et tout s'est bien passé: je pouvais obtenir une véritable gestion des noms de fichiers sensible à la casse, je pouvais créer FOO.txtet foo.txtdans le même répertoire.

Maintenant que Cygwin 64 bits est disponible, je souhaite l’essayer sur Windows 7 Professional 64 bits. Il s'avère que la clé de registre ObscaseInsensitive n'a aucun effet sur Cygwin 64 bits, car elle semble ne concerner que le sous-système Win32. Le sous-système pour les applications UNIX (SUA) n'est pas non plus disponible dans Windows 7 Professionnel 64 bits (Enterprise ou Ultimate est requis). En fait, je ne sais même pas si l'installation de SUA aiderait vraiment.

Est-ce que quelqu'un sait s'il est possible d'obtenir une gestion des noms de fichiers sensible à la casse avec Cygwin 64 bits sur Windows 7 Professionnel 64 bits?

Kal
la source

Réponses:

2

La sensibilité à la casse fonctionne sur x86_64-cygwin. N'oubliez pas que sur les systèmes Windows 64 bits, il existe effectivement deux registres, un pour les processus 32 bits et un autre pour les processus 64 bits. (Dans Cygwin, ceux-ci sont représentés par /proc/registry32et /proc/registry64.) Régler la clé à nouveau avec regtool -wet redémarrer devrait résoudre ce problème pour vous.

Yaakov
la source
Mea culpa. D' autres tests confirment que la ObCaseInsensitiveclé n'avoir un effet sur Cygwin 64 bits: Je pourrais créer deux fichiers différents. Le problème semble être avec . dans Cygwin 64-bit ne semble pas être corrigé pour permettre une gestion correcte du nom de fichier sensible à la casse, bien que la clé de registre ait été définie. echo 'FOO' > FOO.txt; echo 'bar' > foo.txtgitgitObCaseInsensitive
Kal
0

Vous pouvez définir une fonction qui vérifie la casse du répertoire cible (sans avoir à changer le registre Windows). De cette façon, j'ai dans le ~/.bash_functionsfichier le code suivant:

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

EDIT: Traitement plus général des paramètres.

J'espère que ça aide.

ATorras
la source