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

Re: Making a script 'sourceable'



    Hi Bart :)

 * Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> dixit:
> >     That given, I'm trying to do two things. First one is detecting
> > the 'sourcing' non portably, in zsh.
> It can be done if setopt NO_FUNCTION_ARG_ZERO is in effect before the
> script is sourced by comparing $0 either to $SHELL or to the name of
> the script.
    Oh, I forgot FUNCTION_ARGZERO. For scripts not intended to be
'exported' outside my system this will do, thanks a lot :)

> > thinking about now is to check the value of the option 'interactive'.
> > If it is on, chances are that we have sourced the script. Otherwise,
> > we may not. This is not perfect, though, because you can run a script
> > (interactive=off) and then source the other script within...
> If all your scripts check both the option and the state of $0 and then 
> explicitly turn off FUNCTION_ARG_ZERO, you're pretty much guaranteed to 
> catch direct sourcing the with the options and indirect sourcing with $0.

    I'll give it a try.
 
> >     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... I
was thinking about writing the scripts carefully so they don't mess
with the current environment. The main problem seems to be the
environment variables and, in the case of zsh, the options (a
portable shell script won't mess with the options). But Lloyd's
solution is more reliable and the price, in modern OS's, is almost
negligible.

    Thanks for your help.

-- 
Linux Registered User 88736
http://www.pleyades.net & http://raul.pleyades.net/



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