我的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
请检查/etc/default/locale
文件并设置所需的LANG
。尝试重新登录或以其他用户身份登录以查看是否正常工作。希望这能有所帮助。