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

Re: avoid $status and $options in POSIX mode

On Sep 17, 11:33am, Eric Blake wrote:
} Subject: avoid $status and $options in POSIX mode
} Yet, the existence of zsh-magic variables like $status and $options 
} infringe upon the right of a user's script to use this namespace for 
} their own desires.  For example, see this recent autoconf patch:
} http://git.sv.gnu.org/cgit/autoconf.git/commit/?id=23a2c336

That patch is incorrect (or maybe only partly correct).  The "options"
variable is only defined if the zsh/parameter module has been loaded,
which it won't be when the shell is started as "sh".  The "status"
variable is also disabled when the shell is started as "sh".

If autoconf is running into problems with $options, the maintainers
need to find out why zsh/parameter is being loaded in the first place.
Is the shell run by the name "zsh" and *then* switched to emulation?
In that event, module autoloads will still be in effect, so $options
will load itself.

The zsh manual says:

In `sh' and `ksh' compatibility modes the following parameters are not
special and not initialized by the shell: ARGC, argv, cdpath, fignore,
fpath, HISTCHARS, mailpath, MANPATH, manpath, path, prompt, PROMPT,
PROMPT2, PROMPT3, PROMPT4, psvar, status, watch.

} It would be really nice if 'emulate sh' could disable zsh magic handling 
} of any variables that infringe upon the lower-case namespace reserved 
} for applications.

Starting the shell as zsh and then running "emulate" is not the same as
compatibility mode, and is unlikely ever to be; "emulate" is meant to
switch back and forth with minimal loss of state, not to entirely wipe
the slate and become another shell.

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