在我知道的所有 shell 中,rm [A-Z]*
删除所有以大写字母开头的文件,但使用 bash 删除所有以字母开头的文件。
由于此问题存在于具有 bash-3 和 bash-4 的 Linux 和 Solaris 上,因此它不可能是由 libc 中的错误模式匹配器或错误配置的区域设置定义引起的错误。
这种奇怪且冒险的行为是有意为之,还是只是一个多年未修复的错误?
这个问题是通过询问Chromium 浏览器不允许为“打印到文件”设置默认纸张大小的问题
以及在聊天中与@Gilles 进行对话而激发的。正如@don_crissti 所指出的,并经我证实,更改语言环境(至少LC_PAPER
)会影响选择的纸张尺寸。
我从来没有想过要选择什么,而且总是选择,en_US.UTF-8
因为这似乎是一个合理的默认选择。
但是,根据聊天中的@Gilles(请参阅从http://chat.stackexchange.com/transcript/message/17017095#17017095开始的对话)。摘录:
吉尔斯:LC_PAPER 默认为 $LANG
吉尔斯:你必须有 LANG=en_US.UTF-8。这是一个坏主意:它设置了 LC_COLLATE 而这几乎总是一件坏事
Gilles:LC_COLLATE 没有描述正确的排序规则,它太严格了(它逐个字符)删除 LANG 而是设置 LC_CTYPE 和 LC_PAPER
Gilles:加上 LC_MESSAGES 如果你想要非英语的消息
显然,这里有一些我不知道的问题,我相信还有很多其他问题。那么,在设置语言环境时应该考虑哪些问题,又应该如何设置呢?我一直只是dpkg-reconfigure locales
在 Debian 中运行,并没有三思而后行。
具体问题:我应该将语言环境设置为 en_IN.UTF-8 吗?这样做有什么缺点吗?
我想要一个德语(奥地利)语言环境(A4 纸张大小,24 小时制,yyyy-mm-dd),但是一个英语用户界面(我不喜欢糟糕的翻译)。我认为实现这一点的正确方法是LC_
在我的.bashrc
(如果我错了,请纠正我)中如下设置变量:
LC_MESSAGES=en_US.UTF-8
LC_$everythingelse=de_AT.UTF-8
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方法来设置 LC_$everythingelse 而不是设置每个值?设置 LC_ALL 不是一个选项,因为它优先于 LC_MESSAGES:
$ export LC_ALL=de_AT.UTF_8
$ export LC_MESSAGES=en_US.UTF_8
$ echo $LC_MESSAGES
en_US.UTF_8
$ locale | grep LC_MESSAGES
LC_MESSAGES="de_AT.UTF_8"
Run Code Online (Sandbox Code Playgroud)
PS:这是一台共享机器,我不是 sudoer,所以更改系统范围的设置不是一种选择。