title: Why does `time` not work on `echo`?
body: <p><code>time</code> seems to work generally on my system:</p>
  
  <pre><code>➜  ~ time touch tmp.txt
  touch tmp.txt  0.00s user 0.00s system 54% cpu 0.007 total
  </code></pre>
  
  <p>Yet its output seems to get suppressed when I attempt to <code>time echo</code>.</p>
  
  <pre><code>➜  ~ time echo 
  
  </code></pre>
  
  <p>And to thicken the plot: it seems to recover its ability to measure <code>echo</code>, provided I throw that <code>echo</code> into a pipeline:</p>
  
  <pre><code>➜  ~ time echo  | xxd     
  00000000: f09f 8d94 0a                             .....
  echo   0.00s user 0.00s system 38% cpu 0.002 total
  xxd  0.00s user 0.00s system 88% cpu 0.003 total
  </code></pre>
  
  <p>What's going on? Is <code>echo</code> outputting to <code>time</code>'s favourite stream, replacing its report?</p>
  
  <p>Bonus points for: is there some way (e.g. stream redirection) to make <code>time echo </code> output the usual report?</p>
  
  <hr>
  
  <p><strong>Edit:</strong> Some commenters have pointed out that I am using <code>zsh</code>. I'd not noticed that at the time, but that explains a lot.</p>
  
  <p><code>bash</code> uses normal executables to do <code>time</code> and <code>echo</code>.</p>
  
  <pre><code>bash-3.2$ which echo
  /usr/local/opt/coreutils/libexec/gnubin/echo
  bash-3.2$ which time
  /usr/bin/time
  </code></pre>
  
  <p>(Looks like I am using a GNU version of <code>echo</code> rather than the presumably BSD one, <code>/bin/echo</code>, that comes with Mac OS X).</p>
  
  <p>Whereas <code>zsh</code> provides something significantly more special:</p>
  
  <pre><code>➜  ~ which echo
  echo: shell built-in command
  ➜  ~ which time
  time: shell reserved word
  </code></pre>
  
  <p>Neither of these are normal executables. Very interesting!</p>