É uma questão interessante, mas acho que pode haver um equívoco sobre como as variáveis são configuradas. Quando uma sessão de shell segura é iniciada ( ssh remotehost
), o que acontece na outra extremidade é uma instanciação de um novo shell com um ambiente separado. Essa é uma maneira elegante de dizer que o servidor inicia um novo shell. Esse novo shell pode ou não ser configurado com a mesma localidade do seu shell local original.
Por exemplo
geee: ~ $ echo 'locale |grep LANG' :: 'date' LANG=en_US.UTF-8 :: Mon Dec 3 07:04:00 CET 2012 $ ssh flode flode: ~ $ echo 'locale |grep LANG' :: 'date' LANG=nb_NO.UTF-8 LANGUAGE=nb_NO.UTF-8 :: ma. 03. des. 06:59:33 +0100 2012
Para demonstrar isso, configurei o código do idioma no shell remoto do norueguês adicionando as seguintes linhas ao arquivo ~ / .bash_profile:
export LANG=nb_NO.UTF-8
export LANGUAGE=nb_NO.UTF-8
export LC_ALL=nb_NO.UTF-8
Da mesma forma, você terá que configurar o ambiente no shell remoto para fazer o mesmo. É claro que outras shells lêem arquivos de inicialização diferentes, como ~ / .zprofile, para o shell Z.
O equívoco que eu suspeitava estava em que as variáveis locais (configurações) não são de forma alguma encaminhadas. O shell remoto tem suas próprias configurações. Para listar os idiomas disponíveis no host remoto, seja um shell BusyBox minimalista ou um SO GNU completo, use o comando locale
com a opção -a
(conforme observado na pergunta). Qualquer uma das linhas impressas pode ser usada como uma configuração de localidade para esse ambiente.
Quanto à primeira pergunta, a localidade padrão na qual qualquer shell é iniciado geralmente é configurada em um local central, como / etc / profile. A maioria das caixas de login lê esse arquivo na inicialização.