[EMAIL PROTECTED] wrote:

-------

Message: 1
Date: Tue, 10 Oct 2006 16:08:05 -0500
From: mwoehlke <[EMAIL PROTECTED]>
Subject: How to detect bash?
To: bug-bash@gnu.org
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Anyone have any clever, VERY reliable tricks for detecting if the current shell is bash? The obvious way is '[ -n "$BASH" ]', but in the interest of catching idiots that set BASH to get around such a check, I came up with:

[ "`BASH_SUBSHELL=975 ; ( echo $BASH_SUBSHELL )`" -eq 976 ]

(975 is of course an arbitrary number.)

Anyone think they know a better way (or a reason the above might not work)? I'm guessing it can still be circumvented*, but one would have to be specifically making an effort to do so.

(* Actually, I'm not 100% certain it can; you have to be able to run a script upon sub-shell startup. I'm assuming that can be done, but maybe I'm wrong...)


I have this.  I don't like it, but I don't know any better.

getshelltype ()
{
   #
   # unfortunately, using set -o options doesn't work here
   #
   if typeset -Z a 2> /dev/null; then
       echo ksh
   else
       echo bash
   fi
}



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

Reply via email to