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