Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: zsh precommand modifiers stop accepting argument if quoted

On Wed, Mar 29, 2017 at 11:00 PM, Cuong Manh Le
<cuong.manhle.vn@xxxxxxxxx> wrote:
> $ zsh -c '\exec -a foo zsh -c "print -- \$0"'
> zsh:1: command not found: -a
> $ zsh -c '\command -v ls'
> zsh:1: command not found: -v
> Is this behavior a feature or a bug? it it documented somewhere?

There's no promise that precommand modifiers will work at all when
quoted. They're syntactic tokens, so if you quote them they become
different tokens. It just happens that "exec" and "command" are both
implemented as builtins, so the quoted forms can still be looked up
and run that way, but if you have changed the token then the
corresponding syntax rules do not apply.

This is similar to the way that "typeset" as a reserved word differs
from "typeset" as a builtin command.  The typeset dichotomy was
introduced a lot more recently and so is more carefully documented --
there's probably a doc clarification that could be made for the
precommand modifiers.

Messages sorted by: Reverse Date, Date, Thread, Author