UNIX FAQ Version 2.1 92/12/04 -- Question 2.10

UNIX FAQ Version 2.1 92/12/04 -- Question 2.10

How do I tell inside .cshrc if I'm a login shell?

From: msb@sq.com (Mark Brader) Date: Mon, 26 Oct 1992 20:15:00 -0500 When people ask this, they usually mean either How can I tell if it's an interactive shell? or How can I tell if it's a top-level shell? You could perhaps determine if your shell truly is a login shell (i.e. is going to source ".login" after it is done with ".cshrc") by fooling around with "ps" and "$$". Login shells generally have names that begin with a '-'. If you're really interested in the other two questions, here's one way you can organize your .cshrc to find out. if (! $?CSHLEVEL) then # # This is a "top-level" shell, # perhaps a login shell, perhaps a shell started up by # 'rsh machine some-command' # This is where we should set PATH and anything else we # want to apply to every one of our shells. # setenv CSHLEVEL 0 set home = ~username # just to be sure source ~/.env # environment stuff we always want else # # This shell is a child of one of our other shells so # we don't need to set all the environment variables again. # set tmp = $CSHLEVEL @ tmp++ setenv CSHLEVEL $tmp endif # Exit from .cshrc if not interactive, e.g. under rsh if (! $?prompt) exit # Here we could set the prompt or aliases that would be useful # for interactive shells only. source ~/.aliases