david@wubios.wustl.edu (David J. Camp) (02/11/89)
Does anyone know a way to determine whether you are in the login shell from .cshrc? -David- -- Bitnet: david@wubios.wustl ^ Mr. David J. Camp Internet: david%wubios@wucs1.wustl.edu < * > Box 8067, Biostatistics uucp: uunet!wucs1!wubios!david v 660 South Euclid Washington University Medical School Saint Louis, MO 63110
dg@lakart.UUCP (David Goodenough) (02/13/89)
From article <309@wubios.wustl.edu>, by david@wubios.wustl.edu (David J. Camp): > Does anyone know a way to determine whether you are in the login shell > from .cshrc? -David- In .cshrc say: set login=0 and in .login say: set login=1 Now if ($login == 1) you have a login shell. This relies on the fact that .cshrc is executed by every csh, but .login is only execute by your login csh, AND after .cshrc has done it's bit. -- dg@lakart.UUCP - David Goodenough +---+ IHS | +-+-+ ....... !harvard!xait!lakart!dg +-+-+ | AKA: dg%lakart.uucp@xait.xerox.com +---+
maart@cs.vu.nl (Maarten Litmaath) (02/14/89)
#! /bin/sh
# @(#)loginsh 2.0 89/02/14 Maarten Litmaath @ VU Amsterdam (maart@cs.vu.nl)
#
# determine if the parent is a loginshell: if it is either a child of
# /etc/init (process id 1), or /usr/etc/in.rlogind or /etc/rlogind
# (note: it's unsafe to assume the parent is a loginshell iff (sic) its name
# starts with a `-')
# note: loginsh is BSD-specific; a SysV variant should be straightforward
# if invoked with any argument, loginsh will produce some diagnostics
# first find out if `sps' (the fast variant of `ps') exists - if you already
# know the answer, you could replace the test either by the `sps' or the `ps'
# assignments
# close stderr, to prevent complaints from sh if `sps' doesn't exist
exec 2>&-
[ "`sps N`" ] && {
PPS='sps fp '
PS='sps p '
S=
} || {
PPS='/bin/ps l'
PS='/bin/ps '
S=..
}
PSED="sed -n '2s/................. *\([^ ]*\).*/\1/p'"
SED="sed -n '2s/$S..................\([^ ]*\).*/\1/p'"
ppid=`$PPS$$ | eval $PSED`
[ $# != 0 ] && /bin/echo -n "my ppid is $ppid, of which the ppid is "
ppid=`$PPS$ppid | eval $PSED`
[ $ppid = 1 ] && {
[ $# != 0 ] && echo "1: init"
exit 0
}
cmd=`$PS$ppid | eval $SED`
[ $# != 0 ] && echo "$ppid: $cmd"
case "$cmd" in
in.rlogind|rlogind)
exit 0
esac
exit 1
--
"I love it |Maarten Litmaath @ VU Amsterdam:
when a plan comes together." |maart@cs.vu.nl, mcvax!botter!maart