Удивительный: неправильный часовой пояс

Как правило, я устанавливаю часовой пояс часов моего компьютера, изменяя файл .bashrc, добавляя, скажем, TZ='America/Los_Angeles'; export TZ TZ='America/Los_Angeles'; export TZ таким образом, чтобы всякий раз, когда вызывается date возвращается правильное время в нужном часовом поясе. Тем не менее, после исследования awesome, кажется, что запуск echo $TZ в awesome возвращает что-то иное, чем когда я запускаю echo $TZ в моем собственном терминале.

Согласно любому экземпляру lua repl, echo $TZ также возвращает правильный часовой пояс (в соответствии с .bashrc).

Как мне синхронизировать часовые пояса по всем программам?

Ваша проблема заключается в том, что вы не определяете переменную окружения TZ в правом файле. ~/.bashrc – это файл конфигурации для интерактивных оболочек. Это место для псевдонимов, привязок клавиш и других вещей, которые вы хотите иметь в интерактивной оболочке. Хотя вы можете определить переменную окружения, эта переменная будет установлена ​​только в программах, запускаемых из интерактивной оболочки. Это исключило ваш оконный менеджер и любую программу, запускаемую диспетчером окон.

Поэтому вместо этого определите переменные среды в нужном месте. Для неграфических логинов правильное место – ~/.profile . Когда вы входите в графический режим, правильное место зависит от вашего дистрибутива, диспетчера экрана и вашего диспетчера сеансов или окон. На Ubuntu я считаю, что все диспетчеристы настроены на чтение ~/.profile . Поэтому определите переменные среды в ~/.profile .

Эта тема пришла много раз – см. Есть ли эквивалентный файл .bashrc, который читают все оболочки?

В вашей ситуации альтернативной возможностью является определение переменной среды в вашем файле Awesome ( os.setenv('TZ', 'America/Los_Angeles') ). Удивительным было бы подходящее место для действий, если вы хотите изменить часовой пояс, не выходя из дома и обратно (если вы путешествуете с ноутбуком).