天天看點

ssh 與 locale

1 我的 ubuntu 11.10 使用 zh_CN.UTF-8  ,導緻連接配接到 ssh 伺服器上顯示中文,本來是很友善的,但是最近要監控某些功能,需要ssh 伺服器(en_US.UTF-8)顯示英文 !

locale 

LANG=zh_CN.UTF-8 

LANGUAGE=zh_CN:en_US:en 

LC_CTYPE=zh_CN.UTF-8 

LC_NUMERIC="en_US.UTF-8" 

LC_TIME="en_US.UTF-8" 

LC_COLLATE=zh_CN.UTF-8 

LC_MONETARY="en_US.UTF-8" 

LC_MESSAGES=zh_CN.UTF-8 

LC_PAPER="en_US.UTF-8" 

LC_NAME="en_US.UTF-8" 

LC_ADDRESS="en_US.UTF-8" 

LC_TELEPHONE="en_US.UTF-8" 

LC_MEASUREMENT="en_US.UTF-8" 

LC_IDENTIFICATION="en_US.UTF-8" 

LC_ALL= 

2 ssh -v 參數可以顯示整個ssh 過程,注意紅色字!

ssh -v root@xen 

OpenSSH_5.8p1 Debian-7ubuntu1, OpenSSL 1.0.0e 6 Sep 2011 

debug1: Reading configuration data /etc/ssh/ssh_config 

debug1: Applying options for * 

debug1: Connecting to xen [192.168.57.71] port 22. 

.......部分略

debug1: Sending environment. 

debug1: Sending env LC_MESSAGES = zh_CN.UTF-8 

debug1: Sending env LC_COLLATE = zh_CN.UTF-8 

debug1: Sending env LANG = en_US.UTF-8 

debug1: Sending env LC_CTYPE = zh_CN.UTF-8 

Last login: Tue Dec  6 10:52:15 2011 from 192.168.6.154 

[LOAD] 

0.00 0.00 0.00 1/101 17330 

[DISK] 

檔案系統      類型    容量  已用 可用 已用% 挂載點 

/dev/sda1     ext3    9.7G  4.9G  4.4G  53% / 

/dev/sdb1     ext3     79G   58G   18G  77% /data 

tmpfs        tmpfs    250M     0  250M   0% /dev/shm 

/data/iso/linux/rhel-server-5.4-x86_64-dvd.iso 

           iso9660    3.4G  3.4G     0 100% /mnt/rhel5.4-x86_64 

/data/iso/linux/CentOS-5.5-x86_64-bin-DVD-1of2.iso 

           iso9660    4.1G  4.1G     0 100% /mnt/centos5.5-x86_64 

/data/iso/linux/rhel6.iso 

3 解決方法

$ tail -n 3 .bash_profile #将以下兩行添加到 ssh 伺服器下 某使用者 ‘.bash_profile’ 即可!

locale | sed -r 's/zh_CN/en_US/g' > .lang

source ~/.lang

192.168.57.71 [~]$ df -Th 

Filesystem    Type    Size  Used Avail Use% Mounted on 

           iso9660    3.2G  3.2G     0 100% /mnt/rhel6-x86_64 

拓展

<a href="http://www.chinaunix.net/jh/6/834459.html" target="_blank">怎樣設定locale呢? </a>

設定locale就是設定12大類的locale分類屬性,即 12個LC_*。除了這12個變量可以設定以外,為了簡便起見,還有兩個變量:LC_ALL和LANG。

它們之間有一個優先級的關系: LC_ALL&gt;LC_*&gt;LANG 可以這麼說,LC_ALL是最上級設定或者強制設定,而LANG是預設設定值。 

1、如果你設定了LC_ALL=zh_CN.UTF-8,那麼不管LC_*和LANG設定成什麼值,它們都會被強制服從LC_ALL的設定,成為 zh_CN.UTF-8。 

2、假如你設定了LANG=zh_CN.UTF-8,而其他的LC_*=en_US.UTF- 8,并且沒有設定LC_ALL的話,那麼系統的locale設定以LC_*=en_US.UTF-8。 

3、假如你設定了LANG=zh_CN.UTF- 8,而其他的LC_*,和LC_ALL均未設定的話,系統會将LC_*設定成預設值,也就是LANG的值 zh_CN.UTF-8 。 

4、假如你設定了 LANG=zh_CN.UTF-8,而其他的LC_CTYPE=en_US.UTF-8,其他的LC_*,和LC_ALL均未設定的話,

那麼系統的 locale設定将是:LC_CTYPE=en_US.UTF-8,其餘的 LC_COLLATE,LC_MESSAGES等等均會采用預設值,也就是 LANG的值,

也就是LC_COLLATE=LC_MESSAGES=……= LC_PAPER=LANG=zh_CN.UTF-8。  

是以,locale是這樣設定的: 

1、如果你需要一個純中文的系統的話,設定LC_ALL= zh_CN.XXXX,或者 LANG= zh_CN.XXXX都可以,當然你可以兩個都設定,但正如上面所講,LC_ALL的值将覆寫所有其他的locale設定,不要作無用功。 

2、如果你隻想要一個可以輸入中文的環境,而保持菜單、标題,系統資訊等等為英文界面,那麼隻需要設定 LC_CTYPE=zh_CN.XXXX,LANG= en_US.XXXX就可以了。這樣LC_CTYPE=zh_CN.XXXX,而 LC_COLLATE=LC_MESSAGES=……= LC_PAPER=LANG=en_US.XXXX。 

3、假如你高興的話,可以把12個 LC_*一一設定成你需要的值,打造一個古靈精怪的系統: LC_CTYPE=zh_CN.GBK/GBK(使用中文編碼内碼GBK字元集); LC_NUMERIC=en_GB.ISO-8859-1(使用大不列颠的數字系統) [email protected](德國的度量衡使用ISO-8859-15字元集) 羅馬的位址書寫方式,美國的紙張設定……。估計沒人這麼幹吧。

4、假如你什麼也不做的話,也就是LC_ALL,LANG和LC_*均不指定特定值的話,系統将采用 POSIX作為lcoale,也就是C locale。 

結束

好了繼續吧!

本文轉自 dongnan 51CTO部落格,原文連結:http://blog.51cto.com/dngood/735299

繼續閱讀