Normalmente defino todas as minhas configurações de localidade como 'C'. É o que estou acostumado. Gosto ls
de organizar as coisas do jeito que estou acostumado nas últimas décadas.
Então imagine minha surpresa e consternação quando entrei LANG=C
e .bashrc
agora, quando faço login, não há gerenciador de janelas.
Isso pode ser corrigido?
Atualizar:Pode ser LC_ALL=C
. Um dos dois está quebrando. LC_COLLATE=C
corrige algumas coisas, mas não outras.
-E
Linux xxxx 3.10.0-957.10.1.el7.x86_64 #1 SMP Mon Mar 18 15:06:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Responder1
Um dos recursos relevantes para o sistema afetado pelas configurações de localidade é ocodificação de texto, ou o "charset" ou a "codepage" – retirado do parâmetro LC_CTYPE. Embora em muitas situações a codificação do texto seja dada por especificação (por exemplo, as strings do protocolo D-Bus são sempre UTF-8), também há muitos lugares onde a codificação não é especificada e deve ser retirada do locale atual do sistema.
Em particular,nomes de arquivossão frequentemente mostrados de acordo com a codificação de texto da localidade atual. Programas escritos em Python 3, por exemplo, usam a codificação de localidade atual se o programa esquecer de especificar o contrário.
A localidade 'C' implica codificação de texto ASCII de 7 bits (ANSI_X3.4-1968), e parte do seu problema pode ser que, embora muitos programas (aqueles escritos em C, geralmente) interpretem isso para permitir valores arbitrários de 8 bits, há também há muitos programas que têm uma interpretação muito mais rigorosa erejeitarquaisquer valores acima de 127 (ou seja, não ASCII) são considerados inválidos. Pode ser que um erro de decodificação seja causado por algum nome de arquivo, ou algum parâmetro de configuração, ou algum outro arquivo de texto.
Na verdade, neste ponto você encontrará até programas que se recusam abertamente a trabalhar com um locale que especifica a codificação de texto ASCII – alguns deles exigindo especificamente UTF-8 (como o gnome-terminal), e alguns outros exigindo qualquer 8- codificação de bits.
Se a sua distribuição aplica o patch "C.UTF-8" à libc, use-o:
LANG=C.UTF-8
Caso contrário, use um dos seguintes:
LANG=en_US.UTF-8 LC_TIME=C LC_COLLATE=C LC_MESSAGES=C
LANG=C LC_CTYPE=en_US.UTF-8
(Você pode executar locale charmap
para ver qual página de código está em vigor de acordo com as variáveis de ambiente atuais – em ambos os casos deve ser UTF-8. Se você escolher a terceira opção, tome cuidado com programas com bugs que olham diretamente para $LANG em vez de chamarnl_langinfo(CODESET)como deveriam.)