Quais são as implicações da configuração de LC_ALL no Solaris?

2

Para suportar um aplicativo que acabamos de instalar, fui solicitado a adicionar esse comando ao arquivo /etc/profile em nosso servidor UNIX Solaris 10:

LC_ALL=en_US.UTF-8; export LC_ALL

O efeito disto altera o "locale" no servidor, que atualmente não está definido (com o padrão "C").

Minha pergunta: há algum motivo para eu não fazer essa alteração?

Como alternativa, posso imaginar escrever um script que exporte essa variável, execute o aplicativo e, em seguida, "desconfigure" novamente. Eu não me importo de fazer isso, mas eu realmente não sei muito sobre o impacto de fazer uma mudança como essa.

Eu também entendo que a mesma alteração pode ser feita no arquivo /etc/default/init . Isso seria uma solução melhor?

    
por BellevueBob 23.08.2013 / 19:27

2 respostas

1

LC_ALL supera todas as outras configurações de ambiente. Eu recomendo strongmente não definir este sistema em todo o sistema, porque isso significa que qualquer aplicativo ou usuário que deseja usar configurações diferentes deve primeiro anular LC_ALL .

Em vez disso, se um aplicativo precisar de configurações de localidade específicas, execute-o por meio de um script de wrapper.

#!/bin/sh
LC_ALL=en_US.UTF-8 exec /path/to/application "$@"
    
por 30.08.2013 / 01:12
1

UTF-8 é uma opção muito melhor do que a POSIX locale e atualmente é o conjunto de códigos padrão do Solaris 11.

Eu não esperaria nada de errado usando isso, pois é totalmente compatível com ASCII .

Quanto a en_US , haverá diferenças sutis, como a ordenação de caracteres ou a maneira como as datas são exibidas, como exibido nesses comandos:

$ export LC_ALL=C
$ date
Wed Aug 28 01:21:55 CEST 2013
$ printf "a\nb\nA\nB\nC\n" | sort
A
B
C
a
b
$ LC_ALL=en_US.UTF-8
$ date
Wednesday, August 28, 2013 01:21:58 AM CEST
$ printf "a\nb\nA\nB\nC\n" | sort
a
A
b
B
C

Isso não afetará o software do sistema, como é óbvio, todas as localidades fornecidas são suportadas.

Aplicativos que exigem um comportamento POSIX restrito devem definir LC_ALL a C ou POSIX .

Quanto a onde implementar a alteração, a melhor maneira é editar o arquivo /etc/default/init , que definirá cada localidade padrão do processo e não apenas sh , ksh , bash e zsh .

    
por 28.08.2013 / 01:32