Tôi dành rất nhiều thời gian của mình cho ssh
các máy khác nhau, tất cả đều khác nhau (một số được nhúng, một số chạy Linux, một số chạy BSD, & c.). Tuy nhiên, trên các máy cục bộ của riêng tôi, tôi sử dụng OS X, tất nhiên có vùng người dùng dựa trên BSD. Ngôn ngữ của tôi trên các máy đó được đặt thành en_GB.UTF-8, đây là một trong những tùy chọn khả dụng:
% echo `sw_vers`
ProductName: Mac OS X ProductVersion: 10.8.2 BuildVersion: 12C60
% locale -a | grep -i 'en_gb.utf'
en_GB.UTF-8
Một số hệ thống Linux có khả năng cao hơn mà tôi sử dụng dường như có một tùy chọn tương đương, nhưng tôi lưu ý rằng trên Linux tên này hơi khác:
% lsb_release -d
Description: Debian GNU/Linux 6.0.3 (squeeze)
% locale -a | grep -i 'en_gb.utf'
en_GB.utf8
Điều này khiến tôi tự hỏi: Khi tôi ssh
vào một máy Linux từ máy Mac của mình và nó chuyển tiếp tất cả các LC_*
biến của tôi với hậu tố 'UTF-8', máy Linux đó có hiểu những gì đang được hỏi về nó không? Hay nó chỉ rơi trở lại một số địa phương khác?
chỉnh sửa: Đây là một ví dụ về những gì tôi đang đề cập đến:
% 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:~ %
Trong cả hai trường hợp, cơ chế đằng sau hành vi của nó là gì và nó có phụ thuộc vào bất kỳ thiết lập cụ thể nào không (ví dụ: tôi sẽ thấy hành vi tương tự trên hệ thống dựa trên BusyBox như trên hệ thống dựa trên GNU)?