Time 在没有子shell的情况下对多个命令计时?

Time 在没有子shell的情况下对多个命令计时?,time,zsh,subshell,Time,Zsh,Subshell,有没有办法在zsh中使用time保留字来计时多个命令,而不启动子shell 我知道这是可行的: { time ( sleep 5 sleep 3 PROMPT='foobar> ' ) } 但是,括号表示已创建子shell,并且初始化的变量不会导出 我知道我可以捕获前后的变量,比如 start=$(time) # do something end=$(time) echo start - end | bc 虽然对于临时计时来说,这有点麻烦。不,时间只能在不同的进

有没有办法在zsh中使用
time
保留字来计时多个命令,而不启动子shell

我知道这是可行的:

{ time (
    sleep 5
    sleep 3
    PROMPT='foobar> '
) }
但是,括号表示已创建子shell,并且初始化的变量不会导出

我知道我可以捕获前后的变量,比如

start=$(time)
# do something
end=$(time)
echo start - end | bc

虽然对于临时计时来说,这有点麻烦。

不,
时间
只能在不同的进程上工作。因此,它不适用于
{…}
或内置代码,例如:

time { ls }
time echo
请注意,如果已经有子对象,则捕获时间输出的方法将不起作用(因为还将考虑子对象在运行命令时的时间)。如果有陷阱和相应的信号出现,同上