On Tue, Oct 10, 2006 at 06:14:22PM -0500, mwoehlke wrote:
[...]
> >$ zsh -c 'echo "`/dev/null 2>&1`"' bash
> >bash: /dev/null: Permission denied
> >
> >$ zsh
> >$ ARGV0=bash ash -c 'echo "`/dev/null 2>&1`"; echo $BASH'
> >bash: /dev/null: Permission denied
> 
> Eh? I get:
> 
> $ zsh -c 'echo "`/dev/null 2>&1`"' bash
> zsh:1: permission denied: /dev/null

Well, I do get what I said with zsh 4.3.2

> $ ARGV0=bash ash -c 'echo "`/dev/null 2>&1`"; echo $BASH'
> /dev/null: permission denied

(note that this command must be run from zsh which uses
ARGV0=... to set ash's argv[0]).

You must have an older /ash/ than I have mine is one of the
OpenBSD based sh ones (found on debian).

> 
> So neither of your counter-examples is working for me (although both 
> look like they *should*; go figure).

Though I'd bet the third one with .zshenv worked.

> But since you didn't counter 
> BASH_SUBSHELL (and since I'm too lazy to change it now) I guess I'll 
> stick with that. :-)

BASH_SUBSHELL is a relatively recent addition to bash. Most
systems still don't have a bash3.

$ bash -c 'echo "$BASH_VERSION, <$BASH_SUBSHELL>"'
2.05b.0(2)-release, <>

[...]
> True, but the main point of the exercise is to go with a check that's 
> unlikely to be worked around "by accident". If someone intentionally 
> circumvents the check (and you're right, editing the script would be 
> easy), well then they deserve whatever happens. But I *am* paranoid 
> enough to not trust that $BASH is never set - other than by bash - for 
> some reason. Or that it hasn't been *unset* (since that seems to kill it 
> forever), because we have 'clean environment' scripts that would do this 
> sort of thing.
[...]

Then I'd go with $BASH_VERSION as someone else suggested which
is in every bash version.

-- 
Stéphane


_______________________________________________
Bug-bash mailing list
Bug-bash@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-bash

Reply via email to