Respuestas:
De la misma manera que no puede ejecutarse ls "*.txt"en un shell normal, tampoco puede ejecutarlo en un subshell. Cuando pones *.txtcomillas, hiciste una lsbúsqueda de un archivo literal llamado *.txtcuándo deberías estar haciendo esto:
$ echo $(ls *.txt) # => file.txt otherfile.txt
Una mejor manera de hacer esto es no usarlo lsen absoluto.
$ echo *.txt # => file.txt otherfile.txt
ls.
ls -l "*.txt". O al menos yo puedo. No lo hago a menudo, pero cuando lo hago, generalmente me dice que no pudo encontrar * .txt ...
bashy similareszsh) no son lo mismo que las comillas simples. Por ejemplo, la expansión del parámetro ($foo) se realiza entre comillas dobles, pero no entre comillas simples.