UTC против локального времени имеет смещение около 25 секунд

Чтобы развернуть $ HOME в вашем файле вы можете сначала использовать envsubst (имейте в виду, что это расширит любую переменную env). Затем вы можете прочитать результат в массиве, например.с zsh

args=(${(f)"$(< <(envsubst <infile))"})

или с bash

readarray -t args < <(envsubst <infile)

с последующим запуском

./configure "${args[@]}"

В качестве альтернативы вы можете использовать tr , чтобы отформатировать результат в виде одной строки параметров, перед которой стоит ./configure и направьте его в sh :

{ printf %s './configure '; tr '\n' ' ' <infile; } | sh
3
01.04.2016, 21:07
3 ответа

Следуя последовательности первой команды ( date ):

open("/etc/localtime", O_RDONLY)

Доступ файл часовых поясов, указанный в / etc / localtime , в моем случае это / usr / share / zoneinfo / europe / Zurich . Так что пока все хорошо.


Строка второй команды ( date -u ) подсказала мне, почему она не работает должным образом:

open("/usr/share/zoneinfo/UTC0", O_RDONLY)

В каталоге zoneinfo такого файла не было, поэтому мне пришлось скопируйте UTC в UTC0, и теперь все работает, как ожидалось.


date; date -u
Fri Apr 26 09:52:44 CET 2016
Fri Apr 26 07:52:44 UTC 2016
2
27.01.2020, 21:18

Разница между 04:05:12 CET и 1457838339 по модулю 86400 - это часовой пояс. Если вы получаете смещение в 27 секунд, это означает, что что-то не так в вашем определении часового пояса, и в итоге указывается смещение в 27 секунд вместо предполагаемого (предположительно) 1 часа. Проверьте настройку часового пояса, начиная с переменной TZ . Arago Linux использует Glibc, который имеет несколько опций для указания часовых поясов , но обычно использует файлы часовых поясов из стандартной базы данных часовых поясов (поэтому TZ должно быть CET или лучше что-то вроде Европа / Париж , чтобы подчиняться местным правилам летнего времени и следовать исторической эволюции; или TZ следует отключить, чтобы использовать / etc / localtime ). Вы можете использовать zdump -v , чтобы получить описание часового пояса.

0
27.01.2020, 21:18

25 секунд - разница между POSIX-совместимыми зонами tz и " right »tz зоны в интервале с 01.07.2012 по 01.07.2015. Если tzdata такой старый, и если часовой пояс по умолчанию для оболочки, запускающей эту команду, является POSIX CET, а часовой пояс «-u» является «правильной» версией UTC, тогда «правильный» код будет предполагать, что системные часы нарушены. POSIX, фактически подсчитывая все дополнительные секунды, поэтому «правильный» код вычитает эти 25 секунд как часть преобразования системных часов в гражданское время.

2
27.01.2020, 21:18

Теги

Похожие вопросы