Trascorro molto del mio tempo ssh
in varie macchine, tutte diverse (alcune sono integrate, altre Linux, altre BSD, ecc.). Sulle mie macchine locali, tuttavia, utilizzo OS X, che ovviamente ha una userland basata su BSD. La mia locale su quelle macchine è impostata su en_GB.UTF-8, che è una delle opzioni disponibili:
% echo `sw_vers`
ProductName: Mac OS X ProductVersion: 10.8.2 BuildVersion: 12C60
% locale -a | grep -i 'en_gb.utf'
en_GB.UTF-8
Molti dei sistemi Linux più capaci che uso sembrano avere un'opzione equivalente, ma noto che su Linux il nome è leggermente diverso:
% lsb_release -d
Description: Debian GNU/Linux 6.0.3 (squeeze)
% locale -a | grep -i 'en_gb.utf'
en_GB.utf8
Questo mi fa meravigliare: quando ssh
entro in una macchina Linux dal mio Mac e inoltra tutte le mie LC_*
variabili con quel suffisso "UTF-8", quella macchina Linux capisce persino cosa gli viene chiesto? O sta semplicemente ricadendo in qualche altro locale?
modifica: ecco un esempio di ciò a cui mi riferisco:
% 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:~ %
In entrambi i casi, qual è il meccanismo alla base del suo comportamento e dipende da una particolare configurazione (ad esempio, vedrò lo stesso comportamento su un sistema basato su BusyBox come su uno basato su GNU)?