En sh:no puede entender la sustitución de comandos en los crustáceos
~$ `echo ls`
bin/ Desktop/
Pero en peces: (. Tenga en cuenta que el mensaje de error aparece por encima de la línea de comandos)
fish: Illegal command name “(echo ls)”
~% (echo ls)
~% echo (echo ls)
ls
~% eval (echo ls)
bin/ Desktop/
fish: Illegal command name “(echo ls)”
exec (echo ls)
^
~% exec (echo ls)
Parece que la sustitución de comandos solo funciona como parámetros de un comando, no como un comando en sí mismo? ¿Por qué?
Bueno, la ayuda doc sí dice
Si un parámetro contiene un conjunto de paréntesis, el texto encerrado por el paréntesis se interpretará como una lista de comandos.
Pero aún así, ¿por qué?
Desde el mensaje de error aparece por encima de la línea de comandos y parece que luego lo editó antes de volver a enviarlo, es confuso ya que ninguno de los comandos que muestra produce ese error. Tal vez deberías insertar '(echo ls)' después del mensaje de error para mayor claridad. –
Lo siento, extraño el '()'. Editado – weakish