title: Why is whitespace sometimes needed around metacharacters?
body: <p>A few months ago I tattooed a <a href="http://en.wikipedia.org/wiki/Fork_bomb" rel="noreferrer">fork bomb</a> on my arm, and I skipped the whitespaces, because I think it looks nicer without them. But to my dismay, <strong>sometimes</strong> (not always) when I run it in a shell it doesn't start a fork bomb, but it just gives a syntax error. </p>
  
  <pre><code>bash: syntax error near unexpected token `{:'
  </code></pre>
  
  <p>Yesterday it happened when I tried to run it in a friend's <a href="http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29" rel="noreferrer">Bash</a> shell, and then I added the whitespace and it suddenly worked, <code>:(){ :|:&amp; };:</code> instead of <code>:(){:|:&amp;};:</code></p>
  
  <p>Does the whitespace matter; have I tattooed a syntax error on my arm?!</p>
  
  <p>It seems to always work in <a href="http://en.wikipedia.org/wiki/Z_shell" rel="noreferrer">zsh</a>, but not in Bash.</p>
  
  <p><a href="https://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work">A related question</a> does not explain anything about the whitespaces, which really is my question; <strong>Why is the whitespace needed for Bash to be able to parse it correctly?</strong></p>