Я вошел на рабочий стол Ubuntu 12.04 через ssh, были заданы переменные env локали:
env | grep LC
LC_PAPER=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_MONETARY=zh_CN.UTF-8
LC_NUMERIC=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
, поэтому мой вопрос:
где установлено такое env и почему НЕ установлены LC_CTYPE и LC_MESSAGES?
Когда вы используете языковую поддержку для установки языковых и региональных форматов, результирующие переменные среды записываются в ~/.pam_environment
, как вы уже узнали. Когда вы применяете всю систему, переменные записываются в /etc/default/locale
.
Причина, по которой LC_MESSAGES
, LC_CTYPE
и LC_COLLATE
не установлены явно, заключается в том, что установлено LANG
, а имя локали в LANG
наследуется этими тремя LC_*
переменными. Вы можете проверить это, выполнив команду locale
вместо env | grep LC
.
Общесистемные переменные среды устанавливаются в /etc/environment
, а для локалей /etc/default/locale
/ etc / environment - Этот файл специально предназначен для общесистемных настроек переменных среды. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку. В частности, этот файл хранит общесистемные настройки пути.
/ etc / default / locale - Этот файл специально предназначен для настроек переменных среды общесистемного языкового стандарта (LC_ *). Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку.
Для получения дополнительной информации см. https://help.ubuntu.com/community/EnvironmentVariables#System-wide_environment_variables и https://help.ubuntu.com. / community / Locale
Что касается того, «почему LC_CTYPE и LC_MESSAGES НЕ установлены?», я не смог найти обсуждение, я полагаю, вам повезет больше, если вы отправили отчет об ошибке, запрос функции или, возможно, IRC. , Эта часть вашего вопроса может считаться не по теме и умозрительной.