Hi,

just some _opinion_ on this issue.

Vincent Lefevre wrote:
> With zsh, the whole function is suspended.

That's actually what I would expect from any shell function I call
from the commandline. Everything else causes undetermined behaviour
and is annoying. (Or said otherwise: Yet another reason to use zsh.
It's a feature, not a bug! :-)

> The effect is that zsh is forked (this is not documented, though can
> be guessed), thus $d will not be set in the main shell (Step 5:
> nothing is displayed).

That's annoying indeed. Ran into that with another shell, too, IIRC
bash.

> With bash, dash, mksh and pdksh, only the emacs process is suspended.

Nevertheless bash and dash definitely differ here with regards to
forking. I remember that I once had a shell script which should set
some variable inside a { } block (no more sure if some function or a
while loop).

While bash started a subshell and couldn't return any variable, dash
didn't and it worked with dash but not bash. (Usually things are the
other way round. :-)

I looked up the POSIX definition and it came out that it is not
defined, if a subshell/fork should be used or not, i.e. if you use
such stuff you get undefined behaviour. Unfortunately.

                Regards, Axel
-- 
 ,''`.  |  Axel Beckert <[email protected]>, http://people.debian.org/~abe/
: :' :  |  Debian Developer, ftp.ch.debian.org Admin
`. `'   |  1024D: F067 EA27 26B9 C3FC 1486  202E C09E 1D89 9593 0EDE
  `-    |  4096R: 2517 B724 C5F6 CA99 5329  6E61 2FF9 CD59 6126 16B5



-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to