我知道您可以用来
export LANG=xx_XX.UTF8
在特定区域设置下运行程序,但 Linux/Ubuntu 中的区域设置也具有“格式”选项。
有没有办法在特定的locale
和formats
(分别是 en_US 和 en_GB)下运行应用程序以进行测试,而不影响系统设置?
后续问题:如何转储特定进程运行时的所有 ENV 变量/设置?
我知道您可以用来
export LANG=xx_XX.UTF8
在特定区域设置下运行程序,但 Linux/Ubuntu 中的区域设置也具有“格式”选项。
有没有办法在特定的locale
和formats
(分别是 en_US 和 en_GB)下运行应用程序以进行测试,而不影响系统设置?
后续问题:如何转储特定进程运行时的所有 ENV 变量/设置?
是的,您可以在程序名称/命令之前在命令行本身上设置环境变量,
LANG
例如gedit
:...这将专门设置该环境变量,并且仅针对该特定程序,即
gedit
在该特定会话/运行期间...但是,所选语言应该受该特定程序支持并安装,才能正常工作。然而,其他本地/区域格式可以单独显式设置,每个格式都有自己特定的环境变量,例如
LC_MEASUREMENT
、LC_TIME
、LC_NUMERIC
、LC_MONETARY
... 等,并且您可以按照相同的方式设置任意数量的这些变量,例如:假设当前正在运行的进程...即
/proc/PID/environ
实际PID
正在运行的进程的 ID。以
gedit
示例程序为例,这些可以被转储(在 Bash 中),如下所示:...但是,这些是 NUL/零分隔的条目,为了可读性,您可能希望通过管道将输出解析为单独的行,
xargs
如下所示:请注意,虽然大多数命令行程序将遵循所有显式设置的命令行区域设置环境变量和全局环境变量,但 GUI 程序并非如此......简单的 GUI 程序和 DE 附带的程序(例如 Gnome 应用程序)将最常使用可能同样尊重这些环境变量,但更复杂/独立的程序(例如网络浏览器)很可能有自己的内部配置文件,这些配置文件在其 UI 中设置,并且会忽略外部重复的环境设置并接受其他未内部设置的设置。 ..
例如,FireFox Web 浏览器仅接受从 UI 中的首选项菜单中设置用户界面语言,并将其保存为名为 的条目,该条目
intl.locale.requested
看起来类似user_pref("intl.locale.requested", "en-US,ar");
,并保存在prefs.js
活动配置文件目录内的名为 ie 的文件中例如,对于 SNAP 版本~/snap/firefox/common/.mozilla/firefox/0qag4e79.default/prefs.js
...因此,无论是全局设置还是在命令行上显式设置,都会忽略LANG
或区域设置环境变量...但是,其他与区域设置相关的环境变量,如、和仍然受到尊重(在两种情况)正如到目前为止所出现的那样,因此如果您希望并期望它们都反映在命令行中,则可以在命令行上显式设置它们LANGUAGE
LC_MEASUREMENT
LC_TIME
LC_NUMERIC
LC_MONETARY
/proc/PID/environ
并在适用时同样生效。