One concern I have is that if I understand correctly, it
*allows* application to do:

alias 'while=until'

(though doesn't for other keywords like "{", "!")

and then *requires* implementations to expand "while" in

alias 'echo_expand=echo '
echo_expand while

and *requires* implementations *not* to expand "while" in

while true; do ...; done

Which prevents implementations from doing the kind of alias
expansion done by csh or zsh (more useful IMO, as it is then
similar to what the C preprocessor macro expansion does and was
I beleive the original intension for aliases; that can be useful
for all sorts of code instrumentation though quite limited with
out parameterized aliases).

Also, again, ksh88 (and so the POSIX sh of most commercial
Unices) does allow "select" (a keyword, as allowed by POSIX) to
be aliased.

Currently, in POSIX mode, zsh doesn't do alias expansion for
keywords, including in the echo_expand case. It's not about zsh,
I'm sure zsh will align to whatever POSIX requires for its POSIX
mode, but more about not requiring limitations of the original
implementation when they're not justified.

I'd rather POSIX forbade applications to use "while", "until",
"do", "select", "time", etc in alias names, or leave it
unspecified whether aliases for those are expanded.

-- 
Stephane

Reply via email to