私は多くの時間ssh
をさまざまなマシンに費やしていますが、それらはすべて異なります(一部は埋め込まれている、一部はLinuxを実行している、一部はBSDを実行している、など)。ただし、自分のローカルマシンではOS Xを使用しています。これには、もちろんBSDベースのユーザーランドがあります。これらのマシンの私のロケールは、利用可能なオプションの1つである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
私がMacからLinuxマシンに入る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ベースのシステムと同じ動作が見られますか?)