Wiem, że system operacyjny Windows (ogólnie) nie uwzględnia wielkości liter. Czy dotyczy to wszystkich systemów operacyjnych Windows (od Windows 95 do Windows 7)? Czy istnieje konfiguracja rejestru, która rozróżnia wielkość liter w systemie Windows?
Wiem, że system operacyjny Windows (ogólnie) nie uwzględnia wielkości liter. Czy dotyczy to wszystkich systemów operacyjnych Windows (od Windows 95 do Windows 7)? Czy istnieje konfiguracja rejestru, która rozróżnia wielkość liter w systemie Windows?
Odpowiedzi:
Tak, dotyczy to wszystkich wersji systemu Windows. Nie ma sposobu, aby rozróżnić wielkość liter w systemie Windows. Pamiętaj jednak, że w niektórych aplikacjach, które zostały pierwotnie opracowane dla systemu Unix / Linux, a następnie przeniesione, rozróżniana jest wielkość liter. Na przykład w Cygwin rozróżniana jest wielkość liter. Takie zachowanie jest jednak niezwykle rzadkie.
/bIn/BaShnie działa w moim systemie.
W rzeczywistości zależy to od podsystemu API / Windows, z którego korzystasz (twój program).
Jeśli używasz „ Windows API ” (standard dla aplikacji Windows), nazwy plików nie uwzględniają wielkości liter. Jeśli jednak korzystasz z podsystemu POSIX (inaczej Windows Services for Unix), możesz włączyć rozróżnianie wielkości liter.
Zobacz np. Ten artykuł MS Support: Włącz zachowanie z rozróżnianiem wielkości liter w Windows XP i podsystemie Interix lub SFU
Cygwin próbuje emulować Uniksa. Dlatego musi dziedziczyć rozróżnianie wielkości liter, aby nie przerywać aplikacji. Sam system Windows nie rozróżnia wielkości liter. Chodzi o system plików. Możesz przeczytać więcej na ten temat w systemie plików, systemach plików w systemie Microsoft Windows (Wikipedia).
unsupportedtak powiem.
/bIn/BaShw Cygwin i powiedz mi, że wielkość liter ma znaczenie.
Microsoft dodał nową flagę (atrybut) uwzględniającą wielkość liter, którą można zastosować do katalogów (folderów) NTFS. W przypadku katalogów, w których ta flaga jest ustawiona (włączona), we wszystkich operacjach na plikach w tym katalogu rozróżniana jest wielkość liter, niezależnie od tego, czy określono FILE_FLAG_POSIX_SEMANTICS. Oznacza to, że jeśli masz dwa pliki, które różnią się tylko wielkością liter w katalogu oznaczonym jako rozróżniana wielkość liter, wszystkie aplikacje będą mogły uzyskać do nich dostęp.
Począwszy od wersji 17107 systemu Windows 10 , Microsoft dodał możliwość wyświetlania i modyfikowania tej flagi do polecenia fsutil.exe.
Aby sprawdzić, czy w katalogu rozróżniana jest wielkość liter, uruchom następujące polecenie:
fsutil.exe file queryCaseSensitiveInfo <path>
Aby oznaczyć katalog jako rozróżniający małe lub małe lub duże litery:
fsutil.exe file setCaseSensitiveInfo <path> enable
fsutil.exe file setCaseSensitiveInfo <path> disable
To jest stąd . Możesz ustawić HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitivewartość rejestru na 0sugerowaną przez innych autorów. Utwórz plik o add.regnastępującej treści i uruchom go.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
"obcaseinsensitive"=dword:00000000
Następnie użyj Cygwin do pracy z nazwami plików, w których rozróżniana jest wielkość liter.
Aby to zrobić, musisz zamontować systemy plików NTFS z posix=1opcją w swoim /etc/fstab, jak sugeruje ten artykuł . Oto fragment mojego fstab:
none /cygdrive cygdrive binary,posix=1,user 0 0
C: /cygdrive/c ntfs binary,posix=1,user,auto 0 0
C:/Users /home ntfs binary,posix=1,user,auto 0 0
Po dokonaniu powyższych jest zrobione, będziesz w stanie radzić sobie z wielkość liter nazw korzystających bash, mc, gitetc.
Pamiętaj, aby zrestartować komputer po edycji obu.
Barfieldmv ma rację. W systemie plików rzeczywiście rozróżniana jest wielkość liter, a pliki są przechowywane z odpowiednią wielkością liter. Warstwa dostępu do plików jest odpowiedzialna za usunięcie sprawy podczas dopasowywania plików do nowych deskryptorów plików