Estou executando um servidor Debian ( uname -v
saída #1 SMP Debian 4.9.65-3+deb9u1 (2017-12-23)
). Quando faço login de qualquer um dos vários clientes (macOS 10.13 laptop com ssh padrão, o aplicativo "Prompt" no iOS, entre outros) LANG=C
, apesar de ter passado LANG=en_US.UTF-8
do cliente. Aqui estão algumas informações relevantes:
client$ env | grep LANG
LANG=en_US.UTF-8
client$ ssh -v server
...
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
server$ env | grep LANG
LANG=C
server$ grep -in lang /etc/profile ~/.bash_profile ~/.bash_login ~/.profile ~/.bash_logout ~/.bashrc
grep: ~/.bash_profile: No such file or directory
grep: ~/.bash_login: No such file or directory
server$ locale -a
C
C.UTF-8
POSIX
en_US.utf8
server$ sudo sshd -T | grep acceptenv
acceptenv LANG
acceptenv LC_*
Então, ssh
afirma estar enviando LANG
, sshd
alega estar aceitando LANG
e LANG
não está sendo definido em nenhum dos bash
arquivos de inicialização / desligamento.
Eu sei que eu poderia "consertar" isso com uma configuração ~/.profile
ou algo assim, mas estou mais interessado em saber por que o ambiente não está sendo passado corretamente.
Editar:
Acabei de perceber que o LANG
nome é diferente no macOS e no Debian. Isso ainda não funciona, no entanto:
client$ LANG=en_US.utf8 ssh -v server
...
debug1: Sending environment.
debug1: Sending env LANG = en_US.utf8
server$ env | grep LANG
LANG=C
Editar 2:
Essa diferença de nomes não é um problema Mac-vs-Linux. locale -a
reporta um nome diferente para o locale que é usado por $LANG
. Eu não me preocupei em investigar o porquê.