Checking for interactive shell sessions [Was: Re: Can't enter passphrase in su session.]

Peter Pentchev roam at ringlet.net
Thu May 21 23:04:23 CEST 2009


On Thu, May 21, 2009 at 01:19:44PM -0400, Steven W. Orr wrote:
[snip]
> The proper way to deal with this is to:
> 
> * Source in your .bashrc from your .bash_profile
> * Set all of your environment variables in your .bash_profile
> * Check in your .bashrc to see if PS1 is set. If not then you are not in 
> an interactive session and you need to set critical environment variables. 

Just BTW, a *much* more reliable way to check for an interactive
session, which will not fail in many common cases (PS1 set in system-wide
config files, PS1 also set in .bashrc, PS1 set in the environment of
the calling shell, etc.), is the following:

# First, set up all variables for both interactive and non-interactive
# sessions.
# Then, do this:
case "$-" in
        *i*)
                echo 'Setting up interactive shell params..'
                stty erase ^H
                ;;
	*)
		# Non-interactive session, better don't output anything
		something_or_other=foo
		;;
esac

Of course, substitute your own commands for the "stty" and the assignment :)

Bear in mind that this only applies to Bourne-style shells;
for tcsh, you might need to resort to testing for ($?prompt), indeed.

G'luck,
Peter

-- 
Peter Pentchev	roam at ringlet.net    roam at space.bg    roam at FreeBSD.org
PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint	FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
What would this sentence be like if pi were 3?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: </pipermail/attachments/20090522/71e3cc4d/attachment-0001.pgp>


More information about the Gnupg-users mailing list