I saw two options for cleaning the env: (1) *environ = NULL; in zexecve, make setting $_ conditional upon there being any environmental variables at all (2) pass a new envp around, which if NULL is new environ. The second is more intrusive but doesn't have an ugly hack and it does let _exactly_ the environment specified be passed. I decided that "env" could easily be a shell builtin if an explicit envp is passed, so decided in favour of intrusiveness against hackiness. I think that env-as-builtin is best left pending BINF-handler functions. So this just leaves the way open. I know that using a static data-segment variable for an envp is normally not the best of ideas, I'm relying upon nothing messing with the explict non-current newenvp before an execve(). -Phil