Skip to content
Joachim Ansorg edited this page Nov 12, 2021 · 3 revisions

time is undefined for pipelines. time single stage or bash -c instead.

Problematic code:

time foo | bar

Correct code:

To time the most relevant stage:

foo | { time bar; }

To time everything in a pipeline:

time bash -c 'foo | bar'

Note that you can not use time sh -c to time an entire pipeline, because POSIX does not guarantee that anything other than the last stage is waited upon by the shell.

Rationale:

This behavior is explicitly left undefined in POSIX.

Exceptions:

None. This warning is not emitted in ksh or bash where time is defined for pipelines.

Clone this wiki locally