Sporo czasu spędzam ssh
na różnych komputerach, z których wszystkie są różne (niektóre są osadzone, niektóre uruchamiają Linuksa, niektóre uruchamiają BSD i tak dalej). Jednak na moich lokalnych komputerach używam OS X, który oczywiście ma obszar użytkownika oparty na BSD. Moje ustawienia regionalne na tych komputerach to en_GB.UTF-8, co jest jedną z dostępnych opcji:
% echo `sw_vers`
ProductName: Mac OS X ProductVersion: 10.8.2 BuildVersion: 12C60
% locale -a | grep -i 'en_gb.utf'
en_GB.UTF-8
Niektóre z bardziej wydajnych systemów Linux, których używam, wydają się mieć równoważną opcję, ale zauważam, że w systemie Linux nazwa jest nieco inna:
% lsb_release -d
Description: Debian GNU/Linux 6.0.3 (squeeze)
% locale -a | grep -i 'en_gb.utf'
en_GB.utf8
To mnie zastanawia: kiedy wchodzę ssh
na maszynę z Linuksem z mojego komputera Mac i przesyła ona wszystkie moje LC_*
zmienne z sufiksem „UTF-8”, czy ta maszyna z Linuksem rozumie nawet, o co jest proszona? A może po prostu wraca do innej lokalizacji?
edycja: Oto przykład tego, o czym mówię:
% 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:~ %
W obu przypadkach, jaki jest mechanizm jego zachowania i czy jest on zależny od jakiejkolwiek konkretnej konfiguracji (np. Czy zobaczę takie samo zachowanie w systemie opartym na BusyBox, jak w systemie opartym na GNU)?