Ubuntu

Ubuntu 12.04 奇怪的語言環境行為

  • May 7, 2013

我正在使用 Vagrant 執行 Ubuntu 12.04。而且我很難理解我係統上的語言環境有什麼問題。

當我通過 ssh 登錄到我的盒子時

$ vagrant ssh

並嘗試執行一些與語言環境相關的東西,我發現出了點問題:

$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.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=

或者,例如

$ nonexistcmd
Sorry, command-not-found has crashed! Please file a bug report at:
https://bugs.launchpad.net/command-not-found/+filebug
Please include the following information with the report:

command-not-found version: 0.2.44

但是當我以同一個使用者重新登錄時,sudo su - vagrant一切都變得很好:

$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.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=

vagrant@vagrant-ubuntu-precise-64:~$ nonexistcmd
nonexistcmd: command not found

怎麼會這樣?發生了什麼?

提前致謝!

附加資訊:

$ cat /var/lib/locales/supported.d/local 
en_US.UTF-8 UTF-8

$ cat /etc/default/locale 
LANG="en_US.UTF-8"

我得到了它。

這不是伺服器端的問題。這是我的 MacOS SSH 客戶端發送一些與語言環境相關的環境變數(LANG、LC_*)。感謝一個救命的文章

引用自:https://serverfault.com/questions/505613