Как ограничить время выполнения встроенных функций Zsh?

В .zshrc у меня есть следующий код

function vcs_info_wrapper() {
  vcs_info
  ... # parse $vcs_info_msg_0_ and return info on checkout
}

. Я попытался ограничить выполнение vcs_info до 500 мс и изящно обработать время ожидания следующим образом:

timeout 0.5s vcs_info
if [ $? -eq 124 ]; then
  echo "timed out"
else
  ...  # parse $vcs_info_msg_0_ and return info on checkout
fi

но это не с ошибкой, что команда vcs_info не существует (это функция). Я попытался поместить его в отдельный файл оболочки vcs_info.sh:

autoload -Uz vcs_info
vcs_info

и назвать его так

timeout 0.5s source $HOME/scripts/vcs_info.sh

, но это также не удается, поскольку source также не является команда. Наконец, мне удалось сделать это не сбоем:

timeout 0.5s zsh -c 'source $HOME/scripts/vcs_info.sh'

, но теперь $vcs_info_msg_0_ поглощен подоболочком zsh.

Пожалуйста, помогите мне установить ограничение на выполнение функций и корректно обрабатывать таймауты.

0
задан 23 April 2019 в 16:18

0 ответов

Другие вопросы по тегам:

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