Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: "typeset -x" vs. "export" in 3.1.6
- X-seq: zsh-workers 8380
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: Re: "typeset -x" vs. "export" in 3.1.6
- Date: Sat, 23 Oct 1999 17:43:11 +0000
- In-reply-to: <991023083509.ZM21037@xxxxxxxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
- References: <991023083509.ZM21037@xxxxxxxxxxxxxxxxxxxxxxx>
On Oct 23, 8:35am, Bart Schaefer wrote:
} Subject: "typeset -x" vs. "export" in 3.1.6
}
} Consider the following two functions:
}
} putenv() { typeset -x $1=$2 }
} setenv() { export $1=$2 }
}
} Is it really intentional that they don't have the same behavior?
I'm coming to the conclusion that this just can't be right.
There doesn't seem to have ever been doc written for "typeset -g". The
ChangeLog says "doesn't locallize" and my own commitlog says "marks
non-local, which is not the same as global". Before, "typeset -x" meant
"marks global and puts in the environment, iff not marked local" which
seems to have mutated into "puts in the environment, iff marked global".
This has the effect of rendering -x a no-op anywhere except at the top
level, which I'm pretty sure is incompatible with ksh.
(In bash, "typeset -x" in a function puts the symbol into the environment
but then removes it from the environment again when the function exits;
"export" puts it in the environment and does not remove it again, but it
gets removed when the surrounding context exits if it was local to that
outer context. Can someone who has a real ksh available please confirm
what the precise ksh behavior is? Does it differ in 88/93?)
(Note that in 3.1.6, neither "typeset -x" nor "export" puts a local into
the environment under any circumstances. The difference is only in what
circumstances cause a parameter to be considered a local.)
Achiving compatibility with past versions of zsh (modulo the fix that in
3.0.x "typeset -x FOO=bar" does not assign bar to FOO when FOO is already
a local, although it both assigns and exports if FOO was not previously
declared at all) appears to be as simple as having -x imply -g, and that
would be my preferred solution to all this. However, I'm not averse to
having zsh do the right thing in an emulation mode. I'm just pretty sure
it's currently doing the wrong thing in both cases.
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Messages sorted by:
Reverse Date,
Date,
Thread,
Author