title: Cannot understand command substitution in Fish shell
body: <p>In sh:</p>
  
  <pre><code>~$ `echo ls`
  bin/  Desktop/
  </code></pre>
  
  <p>But in fish:</p>
  
  <pre><code>fish: Illegal command name “(echo ls)”
  ~% (echo ls)
  </code></pre>
  
  <p>(Note that the error message appears above the command line.)</p>
  
  <pre><code>~% echo (echo ls)
  ls
  ~% eval (echo ls)
  bin/  Desktop/
  
  fish: Illegal command name “(echo ls)”
  exec (echo ls)
       ^
  ~% exec (echo ls)
  </code></pre>
  
  <p>It seems that command substitution only works as parameters of a command, not as a command itself? Why?</p>
  
  <p>Well, the help doc does say</p>
  
  <blockquote>
    <p>If a parameter contains a set of parenthesis, the text enclosed by the parenthesis will be interpreted as a list of commands. </p>
  </blockquote>
  
  <p>But still, why?</p>