A classificação depende da localidade; Especificamente, isso depende de $LC_COLLATE (possivelmente substituído por $LC_ALL ), retornando para $LANG se ele não existir. O comando locale mostrará com quais valores você está trabalhando efetivamente. Consulte man 3 strcoll , man 3 setlocale , etc.
LC_COLLATE=C (ou POSIX ou nenhuma localidade) resulta em uma comparação estrita de byte a byte.
LC_COLLATE=en_US.utf8 resulta em uma classificação de equivalência alfabética, com pontuação ignorada e caracteres dentro da mesma classe de equivalência tratados igualmente.