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