检查是否在 bash 中启用了特定的语言环境

mio*_*mio 5 bash locale

我的脚本需要运行具有特定语言环境的程序才能正常工作,因此我希望它检查该语言环境是否可用。我现在已经使用了这个 hack,但我认为有更好的方法来做到这一点。

grep ^ja_JP /etc/locale.gen &>/dev/null || echo >&2 "enable any of the japanese locales first"
Run Code Online (Sandbox Code Playgroud)

dev*_*ull 5

man locale会告诉你这locale -a会列出所有可用的语言环境。

而是说:

locale -a | grep -q ^ja_JP || echo "enable any of the japanese locales first"
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是, locale -a 不足以验证配置选项,因为它会拒绝有效的情况。例如,我可以使用“en_CA.utf8”和“en_CA.UTF-8”达到相同的效果,但后者失败,因为 locale -a 列出了前者。在编写将在不同环境中部署的代码时,这尤其不可取,但我还没有找到其他方法来验证配置选择。 (2认同)