en_US.UTF-8 下奇怪的 mv -vf 输出

en_US.UTF-8 下奇怪的 mv -vf 输出

我的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-8Ubuntu 15.04 实际上无关(因为设置LANG=C有效)。

答案1

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

相关内容