У нас возникла проблема при сборке xpm -3.4k, из-за которой процесс не смог найти -lXt. В CentOS 7 мы сделали следующее :yum install *Xt*
.
До этого мы выполнили yum install xorg*dev*
, чтобы получить другие сборки для разработки X.
Мы попытались выполнить сборку из исходного кода X, но это оказалось слишком трудоемким. Итак, здорово, что у хороших людей в CentOS есть RPMS для разработки.
Я не могу воспроизвести вашу проблему. Но если вы хотите сделать эту функцию автозагружаемой, вам нужно сделать ловушки и переменные локальными для этой функции. Вывод echo -e
также должен быть отправлен в stderr, как и остальная часть отчета, или добавить эту дополнительную новую строку в вызовеprint
:
zmodload zsh/datetime
set -o localtraps
trap true INT QUIT
local TIMEFMT='Total duration: %*E' start end ret duration
strftime -s start 'Start Time: %d/%m/%y %I:%M%P'
{
duration=$(
exec 4>&2 2>&1 1>&3 3>&-
time "$@" 2>&4 4>&-
)
} 3>&1
ret=$?
strftime -s end 'End Time: %d/%m/%y %I:%M%P'
print -rlu2 '' $start $end $duration
return $ret
Другим вариантом было бы заключить все это в (...)
, чтобы оно запускалось в подоболочке.
Обратите внимание, что, как уже упоминалось в ответе, на который вы ссылаетесь, поскольку zsh
time
сообщает о ресурсах, потребленных процессом (, который в zsh
не ограничивается истекшим временем и временем процессора, но может включать использование памяти, переключение контекста, операции ввода-вывода... ), его можно использовать только для команд, выполняемых в дочернем процессе. Поэтому, если вы хотите иметь возможность, например, time
для функции, вам нужно заменить time "$@"
на time ("$@")
, чтобы функция выполнялась в процессе подоболочки.
Но так как вас интересует только прошедшее время, а не обработка ресурсов, вы можете также использовать другой подход, который я здесь предлагаю, и просто выполнить расчет конечного -времени начала. вручную (и выполните форматирование HH:MM:SS.TTT
вручную или с помощью strftime
, если хотите ).