[comp.unix.internals] conditions for C-Shell to be login shell

libove@libove.det.dec.com (Jay Libove) (09/06/90)

Why was the C-Shell (as it exists under Ultrix versions 3.1 and higher,
at least, and probably on other platforms as well) written so that these
two conditions had to be satisfied in order for the shell to be a "login"
shell?

1) the first character of the first argument must be a dash ( '-' )
2) there must be only one argument

Item #1 makes sense, as it gives a way of signalling that a shell should
be a login shell, with an extremely low probability of a login shell being
specified accidentally (as it requires a little playing with arguments to
the exec() functions to get the dash '-' in to argument 0), but...

Item #2 means that only a straight, no other options, interactive c-shell
can be a login shell.

This is a problem in the way that Ultrix systems start up their DECWindows
graphical user interface:

execlp(shell, minus_shell, "-c", window_startup_command)

and since the shell is started with >1 argument, it isn't a login shell,
and therefore the user's ~/.login file never gets read... and all
subsequent applications that start up also don't have the environment
that the user has set up in his/her ~/.login file.

Well, thanks for any/all input!
--

Jay Libove                         libove@libove.det.dec.com
Digital Equipment Corporation      decwrl!libove.det.dec.com!libove
Detroit ACT/Ultrix Resource Center Opinions? They're mine, mine, all mine!
Farmington Hills, Michigan         and D.E.C. Can't have 'em!