Из моих исследований похоже, что zsh выполняет <>
замену до $
замены. Это означает, что когда вы используете вариант $
, он сначала пытается заменить <>
(ничего там), а затем $
(что работает), и вы останетесь со строкой, содержащей <>
символов.
Когда вы не используете $manuals
, сначала он пытается заменить <>
, и это работает. Это вопрос порядка. В последней версии ниже показано, как отложить расширение, чтобы оно произошло одновременно:
Это можно увидеть здесь:
> manuals='/usr/share/man/man<1-9>'
> echo $manuals
/usr/share/man/man<1-9>
> echo /usr/share/man/man<1-9>
/usr/share/man/man1 /usr/share/man/man2 /usr/share/man/man3
/usr/share/man/man4 /usr/share/man/man5 /usr/share/man/man6
/usr/share/man/man7 /usr/share/man/man8
> echo $~manuals
/usr/share/man/man1 /usr/share/man/man2 /usr/share/man/man3
/usr/share/man/man4 /usr/share/man/man5 /usr/share/man/man6
/usr/share/man/man7 /usr/share/man/man8