Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Making a script 'sourceable'
- X-seq: zsh-users 7976
- From: DervishD <disposable1@xxxxxxxxxxxxxx>
- To: zsh-users@xxxxxxxxxx
- Subject: Re: Making a script 'sourceable'
- Date: Sun, 5 Sep 2004 15:33:20 +0200
- In-reply-to: <Pine.LNX.4.61.0409040811330.1742@xxxxxxxxxxxxxxxxxx>
- Mail-followup-to: zsh-users@xxxxxxxxxx
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
- Organization: Pleyades
- References: <20040904110724.GA12874@DervishD> <Pine.LNX.4.61.0409040811330.1742@xxxxxxxxxxxxxxxxxx>
Hi Bart :)
* Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> dixit:
> > > > The second thing is derived from the above question: since
> > > > checking for 'sourcery' ;) is very difficult even non portably, I've
> > > > thought about making my zsh scripts sourceables.
> > > Lloyd Z. has the way of it.
> > Well, an extra fork... I don't really like that method, but...
> There's also this, wherein a function name unlikely to exist in the
> calling shell is invented and then that function destroys itself as soon
> as it is invoked:
>
> --- 8< ---
> #! bin/zsh
> function __the_real_script_$$ {
> unfunction __the_real_script_$$
> emulate -LR zsh
> # body of script goes here, using "local" to control variables
> }
> __the_real_script_$$ "$@"
> --- >8 ---
>
> However, that pretty thoroughly demolishes the usefulness of $0, and any
> error messages that are printed will fail to show the name of the script
> and the line numbers will be "wrong".
So the method pointed by Lloyd is more suitable...
> On the other hand this (and the subshell wrapper variant, too) has the
> advantage that the entire script is parsed for syntax before any of it is
> executed, so if you make a mistake somewhere you don't have half-finished
> script processing to clean up.
Yes, I noticed that this morning, doing tests :)) For me that
pays for the extra fork.
> Back on the first hand again, though, you pay the memory cost of that
> parse on every call to the script.
Usually the scripts are quite short: in fact, that's the reason
that made me think about auditing the scripts to avoid side-effects
when the script is sourced instead of run in a subshell.
Thanks a lot for your help. I probably end up doing the '()'
thing, because the extra fork really is not very expensive, the only
problem is 'ps' output cluttering ;)
Raúl Núñez de Arenas Coronado
--
Linux Registered User 88736
http://www.pleyades.net & http://raul.pleyades.net/
Messages sorted by:
Reverse Date,
Date,
Thread,
Author