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

Re: export



All:

Each process gets a private copy of the environment provided by its
parent. An xterm is just a process. In your example you have this chain
of processes (parent => child):

   xterm => zsh => zsh

There is no way for an arbitrary zsh process to affect the environment
of an arbitrary xterm process.

Yeah, I understand the 'inheritance'. I just thought that 'export' might somehow
be ramped up to overcome that.

We certainly can do what I want, it's just a little bit of trouble:

 	universal() { echo "$1" >>! /tmp/universal; . /tmp/universal }

And in .zshrc:

  	preexec () { [ -e /tmp/universal ] && . /tmp/universal }

Now in xterm #6:

	pts/6 HP-y5--5-Debian1 root /aWorking/Zsh $ universal "trash=trash"

	pts/6 HP-y5--5-Debian1 root /aWorking/Zsh $ echo $trash
	trash

Now hop over to xterm #12:

	pts/12 HP-y5--5-Debian1 root /aWorking/Zsh $ echo $trash
        trash

... so we can universally export instantly.  I normally have four xterms
open at the same time, so being able to do that is very handy.

The above is obviously rather crude, but it's simple and it works. And you
can throw a command in there too.

As Kurtis said, it might be dangerous, but I live on the edge ;-)

-----------------------
>FYI, the "fish" shell does that.

>set -U universal its value

>and that $universal variable (here an array) becomes available
>in all the fish shells (interactive or not) by the same user on
>the machine (with all the security implications it entails).

That's very cool, I think we should have it too.



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