Какие файлы конфигурации переопределяют / etc / default / locale?

По какой-то странной причине, я нахожу, что у меня есть несколько локальных переменных LC_ заданных для значения, которое я не признаю выбранным ( en_ZA.UTF-8 ). Поэтому я хочу установить его по-другому – постоянно, из командной строки и используя соответствующие файлы конфигурации.

Но какие файлы это? Я думаю, он должен быть /etc/default/locale , по крайней мере, на системном уровне. Но там я вижу:

 # File generated by update-locale LANG="en_US.UTF-8" LANGUAGE="en_US:en" 

Существуют ли другие файлы, где могут быть установлены LC_MONETARY , LC_TIME и т. Д.? Я встрепенулся и мог найти подозреваемых.

PS – Я использую Debian Stretch.

Настройки локали передаются через переменные среды, поэтому их можно установить в любом из многих мест, где могут быть установлены переменные среды. /etc/default/locale – это место, где стандартная языковая система системы регистрируется, если вы просматриваете интерфейс конфигурации локали системы, но настройки могут быть в любом другом месте, где установлены переменные среды, например (я просто перечисляю наиболее распространенные ):

  • /etc/profile
  • /etc/profile.d/*
  • /etc/environment
  • ~/.profile или ~/.bash_profile или ~/.login или ~/.zprofile зависимости от вашей оболочки входа
  • ~/.pam_environment
  • (для оболочек, работающих только в терминале) /etc/bash.bashrc , /etc/zshrc , ~/.bashrc , ~/.zshrc и т. д.

Поиск по всему файлу /etc и вашим точкам должен найти его:

 grep -rs en_ZA /etc ~/.[!.]* 

Настройки LC_ALL устанавливаются из LANG если они не установлены, и LC_ALL превосходит все. В выходном файле locale параметры печатаются в двойных кавычках, если они вызваны из LANG или LC_ALL а не явно.