Esse comportamento é exigido pelo POSIX e você pode confiar em isso.
Outra observação de que você deseja definir sua localidade como C
para obter um comportamento consistente. Na localidade com elementos de agrupamento com a mesma ordem de classificação, você terá resultado estranho .
No sistema GNU com localidade UTF-8:
$ printf '%b\n' '\U2461' '\U2460' | sort
②
①
ou:
$ printf '%s\n' A B a b | sort
a
A
b
B
Definindo como C
locale:
$ printf '%b\n' '\U2461' '\U2460' | LC_ALL=C sort
①
②
$ printf '%s\n' A B a b | LC_ALL=C sort
A
B
a
b
Algumas camadas ainda não suportam caracteres multibyte como dash
, mksh
ou suporte, mas irão se sufocar em sequências inválidas de bytes como yash
.