Я багато часу проводжу ssh
під різними машинами, всі вони різні (деякі вбудовані, деякі запускають Linux, деякі запускають BSD та ін.). На власних локальних машинах, однак, я використовую OS X, яка, звичайно, має поле користування на основі BSD. Моя мова на цих машинах встановлена на en_GB.UTF-8, що є одним із доступних варіантів:
% echo `sw_vers`
ProductName: Mac OS X ProductVersion: 10.8.2 BuildVersion: 12C60
% locale -a | grep -i 'en_gb.utf'
en_GB.UTF-8
Деякі з більш спроможних систем Linux, які я використовую, мають еквівалентний варіант, але зауважую, що в Linux назва трохи відрізняється:
% lsb_release -d
Description: Debian GNU/Linux 6.0.3 (squeeze)
% locale -a | grep -i 'en_gb.utf'
en_GB.utf8
Це змушує мене замислитись: коли я перебуваю ssh
на машині Linux з мого Mac, і він пересилає всі мої LC_*
змінні з цим суфіксом 'UTF-8', чи машина Linux навіть розуміє, що про неї запитують? Або це просто повернення до якогось іншого місця?
редагувати: Ось приклад того, про що я маю на увазі:
% ssh -v odin
...
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LC_ALL = en_GB.UTF-8
debug1: Sending env LC_COLLATE = en_GB.UTF-8
debug1: Sending env LC_CTYPE = en_GB.UTF-8
debug1: Sending env LC_MESSAGES = en_GB.UTF-8
debug1: Sending env LC_MONETARY = en_GB.UTF-8
debug1: Sending env LC_NUMERIC = en_GB.UTF-8
debug1: Sending env LC_TIME = en_GB.UTF-8
debug1: Sending env LANG = en_GB.UTF-8
odin:~ % locale | tail -1 # locale is set to .UTF-8 without error...
LC_ALL=en_GB.UTF-8
odin:~ % locale -a | grep 'en_GB.UTF-8' # ... even though .UTF-8 isn't an option
odin:~ %
В будь-якому випадку, який механізм стоїть за його поведінкою, і чи залежить це від будь-якої конкретної настройки (наприклад, чи я побачу таку саму поведінку в системі, що базується на BusyBox, як і в GNU)?