zsh-workers
 help / color / mirror / code / Atom feed
* zsh precommand modifiers stop accepting argument if quoted
@ 2017-03-30  6:00 Cuong Manh Le
  2017-03-30 22:42 ` Bart Schaefer
  0 siblings, 1 reply; 3+ messages in thread
From: Cuong Manh Le @ 2017-03-30  6:00 UTC (permalink / raw)
  To: Zsh hackers list

[-- Attachment #1: Type: text/plain, Size: 435 bytes --]

Hi,

I see this behavior of `exec` and `command` precommand modifiers:

$ 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

Sounds like they stopped accepting its options if quoted.

Is this behavior a feature or a bug? it it documented somewhere?

The full context: http://unix.stackexchange.com/q/354586/38906

Thanks.

Cuong Manh Le
https://cuonglm.xyz

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: zsh precommand modifiers stop accepting argument if quoted
  2017-03-30  6:00 zsh precommand modifiers stop accepting argument if quoted Cuong Manh Le
@ 2017-03-30 22:42 ` Bart Schaefer
  2017-03-31  0:50   ` Cuong Manh Le
  0 siblings, 1 reply; 3+ messages in thread
From: Bart Schaefer @ 2017-03-30 22:42 UTC (permalink / raw)
  To: Zsh hackers list

On Wed, Mar 29, 2017 at 11:00 PM, Cuong Manh Le
<cuong.manhle.vn@gmail.com> 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.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: zsh precommand modifiers stop accepting argument if quoted
  2017-03-30 22:42 ` Bart Schaefer
@ 2017-03-31  0:50   ` Cuong Manh Le
  0 siblings, 0 replies; 3+ messages in thread
From: Cuong Manh Le @ 2017-03-31  0:50 UTC (permalink / raw)
  To: Bart Schaefer; +Cc: Zsh hackers list

[-- Attachment #1: Type: text/plain, Size: 1432 bytes --]

So there no way to prevent an alias named "command" to expand without
breaking the script? In other Bourne-like shell, once can do:

\builtin command -v ls


but it's just broken in zsh. It doesn't work even in sh, ksh emulation, so
making zsh non-compliant there.

>From user perspective, it's definitely a bug.

Cuong Manh Le
https://cuonglm.xyz

On Fri, Mar 31, 2017 at 5:42 AM, Bart Schaefer <schaefer@brasslantern.com>
wrote:

> On Wed, Mar 29, 2017 at 11:00 PM, Cuong Manh Le
> <cuong.manhle.vn@gmail.com> 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.
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-03-31  0:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-30  6:00 zsh precommand modifiers stop accepting argument if quoted Cuong Manh Le
2017-03-30 22:42 ` Bart Schaefer
2017-03-31  0:50   ` Cuong Manh Le

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).