попробуйте это, он запускает простую команду с аргументами и помещает времена $ real $ user $ sys и сохраняет код выхода.
Он также не формирует подоболочки и не затрагивает какие-либо переменные, кроме реальной пользовательской sys, и не мешает запуску скрипта иным образом
timer () {
{ time { "$@" ; } 2>${_} {_}>&- ; } {_}>&2 2>"/tmp/$$.$BASHPID.${#FUNCNAME[@]}"
set -- $?
read -d "" _ real _ user _ sys _ < "/tmp/$$.$BASHPID.${#FUNCNAME[@]}"
rm -f "/tmp/$$.$BASHPID.${#FUNCNAME[@]}"
return $1
}
, например.
timer find /bin /sbin /usr rm /tmp/
echo $real $user $sys
примечание: используется только простая команда, а не конвейер, компоненты которого выполняются в подоболочке
Эта версия позволяет вам указать как $ 1 имя переменных, которые должны получить 3 раза:
timer () {
{ time { "${@:4}" ; } 2>${_} {_}>&- ; } {_}>&2 2>"/tmp/$$.$BASHPID.${#FUNCNAME[@]}"
set -- $? "$@"
read -d "" _ "$2" _ "$3" _ "$4" _ < "/tmp/$$.$BASHPID.${#FUNCNAME[@]}"
rm -f "/tmp/$$.$BASHPID.${#FUNCNAME[@]}"
return $1
}
например.
timer r u s find /bin /sbin /usr rm /tmp/
echo $r $u $s
и может быть полезен, если в конечном итоге он вызывается рекурсивно, чтобы избежать злоупотребления временем; но тогда r u s и т. д. должны быть объявлены локальными в их использовании.
http://blog.sam.liddicott.com/2016/01/timeing-bash-commands.html
Запустите chmod +x blender
с терминала и выполните ls -l blender
, чтобы убедиться, что это сработало. Похоже, что по какой-то причине графический интерфейс не смог сделать исполняемый файл. Если это удастся, вы сможете запустить его.