Мой вывод mv -vf очень странный:

cd /tmp
touch xx yy

$ mv -vf xx yy
â -> â

$ env | grep ^LANG
LANG=en_US.UTF-8

Правильный вывод должен быть:

$ mv -vf xx yy
'xx' -> 'yy'

Это из,

$ env | grep ^LANG
LANG=C

Если я установлю LANG=C то вывод mv -vf снова будет правильным.

Обновление о проверке locale -a:

$ locale -a | grep en
en_US
en_US.utf8

LANG=en_US.utf8

touch xx yy

$ mv -vf xx yy
â -> â

LANG=en_US
touch xx yy

$ mv -vf xx yy
'xx' -> 'yy'

Как так? Будет ли какое-нибудь исправление?

$ lsb_release -a 
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 15.04
Release:        15.04
Codename:       vivid

Кстати, просто протестируйте то же самое под Ubuntu 16.04 LTS Xenial, и проблема исчезла, несмотря на мой LANG=en_US.UTF-8 . Так это ошибка Ubuntu 15.04 тогда? У меня есть несколько машин, использующих Ubuntu 15.04, и все они демонстрируют одинаковое поведение. Это происходит с вами вообще?

Обновление 2:

$ locale -a | grep ^C
C
C.UTF-8

LANG=C.UTF-8
touch xx yy

$ mv -vf xx yy
â -> â

Так что это не имеет ничего общего с en но на самом деле UTF-8 под Ubuntu 15.04 (как работает настройка LANG=C ).

1 ответ1

-1

Пожалуйста, изучите файл /etc/default/locale и установите желаемый LANG . Попробуйте повторно войти в систему или войти в систему с другим пользователем, чтобы увидеть, работает ли он. Надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .