Eu tenho uma máquina OSX em que sort
executa o GNU sort
do coreutils 8.26 (instalado pela Homebrew), e uma máquina Linux na qual sort
executa o GNU sort
do coreutils 8.25.
No Mac:
mac$ echo -e "{1\n2" | sort
2
{1
Enquanto no Linux:
linux$ echo -e "{1\n2" | sort
{1
2
Estou ciente de que sort
depende da localidade. Eu executei locale
na máquina Linux, prefixei cada linha de saída com export
e executei as linhas resultantes na máquina OSX antes de executar (no mesmo terminal) o comando sort novamente, que deu a mesma saída de antes. / p>
No entanto, notei que executar locale
no Mac não mostra todas as linhas que aparecem no Linux e não tenho certeza se isso está relacionado.
A localidade no Linux:
linux$ locale
LANG=en_CA.UTF-8
LANGUAGE=en_CA:en
LC_CTYPE="en_CA.UTF-8"
LC_NUMERIC="en_CA.UTF-8"
LC_TIME="en_CA.UTF-8"
LC_COLLATE="en_CA.UTF-8"
LC_MONETARY="en_CA.UTF-8"
LC_MESSAGES="en_CA.UTF-8"
LC_PAPER="en_CA.UTF-8"
LC_NAME="en_CA.UTF-8"
LC_ADDRESS="en_CA.UTF-8"
LC_TELEPHONE="en_CA.UTF-8"
LC_MEASUREMENT="en_CA.UTF-8"
LC_IDENTIFICATION="en_CA.UTF-8"
LC_ALL=en_CA.UTF-8
E localidade no OSX:
mac$ locale
LANG="en_CA.UTF-8"
LC_COLLATE="en_CA.UTF-8"
LC_CTYPE="en_CA.UTF-8"
LC_MESSAGES="en_CA.UTF-8"
LC_MONETARY="en_CA.UTF-8"
LC_NUMERIC="en_CA.UTF-8"
LC_TIME="en_CA.UTF-8"
LC_ALL="en_CA.UTF-8"
Descobri que, se eu definir LC_ALL=C
nas duas máquinas, elas classificarão 2
antes de {1
. Mas se eu definir LC_ALL=en_CA.UTF-8
em ambas as máquinas, tenho a saída diferente como acima. O mesmo se eu definir LC_ALL=en_CA.utf8
em ambas as máquinas. ( locale -a
listas en_CA.utf8
na máquina Linux mas en_CA.UTF-8
na máquina OSX.)
Alguma ideia do que está acontecendo aqui?