From: Bart Schaefer <schaefer@brasslantern.com>
To: Zsh Users <zsh-users@sunsite.dk>
Subject: Re: Making a script 'sourceable'
Date: Sat, 4 Sep 2004 08:44:56 -0700 (PDT) [thread overview]
Message-ID: <Pine.LNX.4.61.0409040811330.1742@toltec.zanshin.com> (raw)
In-Reply-To: <20040904110724.GA12874@DervishD>
On Sat, 4 Sep 2004, DervishD wrote:
> > > 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".
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.
Back on the first hand again, though, you pay the memory cost of that
parse on every call to the script.
next prev parent reply other threads:[~2004-09-04 15:45 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-04 11:07 DervishD
2004-09-04 15:44 ` Bart Schaefer [this message]
2004-09-05 13:33 ` DervishD
-- strict thread matches above, loose matches on Subject: below --
2004-09-03 16:35 DervishD
2004-09-03 17:01 ` Lloyd Zusman
2004-09-03 22:16 ` DervishD
2004-09-03 17:20 ` Bart Schaefer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.61.0409040811330.1742@toltec.zanshin.com \
--to=schaefer@brasslantern.com \
--cc=zsh-users@sunsite.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).