Ubuntu 12.04 странное поведение локали

Я использую Ubuntu 12.04 с Vagrant. И мне трудно понять, что не так с локалями в моей системе.

Когда я захожу в свой ящик через 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"

1 ответ

Решение

Я понял.

Это не было проблемой на стороне сервера. Это был мой MacOS SSH-клиент, который отправлял некоторые связанные с локалями env vars (LANG, LC_*). Благодаря спасательному сообщению!

Другие вопросы по тегам