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

Re: loading user startup files for zsh scripts



On Feb 10,  8:42pm, Greg Klanderman wrote:
}
} > 	source /the/shared/zshenv $0
} 
} Hmmm, AFAICT, when loading .zshenv, $0 is /bin/zsh even for shell
} scripts.  It does contain the script path once in the script.

Well, that certainly takes me by surprise, because I was sure I'd
tried that ... but indeed looking through init.c the script name of
$0 isn't set up until after ALL the init files have been read.  

This is odd considering that $* has already been set to the script
arguments by the time .zshenv is processed.  It also means that zsh
will read all the init files before discovering that it can't read
the script file.

I'm also finding it a little weird that $0 apparently might be a
metafied string, since setupshin() believes that unmeta(runscript)
is necessary before calling e.g. access().  As far as I can tell
the value would never be unmetafied before being returned via $0,
so that would imply there are circumstances in which $0 is broken.
I don't know what they'd be.

Earlier:

} On a related note, would you be opposed to adding some way to find out
} definitively whether you're running as a script from within zsh?
} Would adding a new parameter be best?  Can you suggest a name?  Is
} runscript != NULL in zsh_main() the right condition to use?  Or maybe
} just set some parameter to the value of runscript when set?

I'm inclined to suggest ZSH_SCRIPT to be initialized from runscript.
I'd also like to get ZSH_INTERPRETER to be the actual path to the shell
executable, but I suspect that's not universally available from the OS.

Returning to your original problem ... I don't suppose all these user's
hosts are running linux?  You can examine /proc/$$/cmdline to find out
if a script name appears.



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