Below is why I was thinking $SHELL, especially since $FAKE_SHELL can
be used to override the /etc/passwd entry. Of course a desktop
environment or whatever might launch a terminal window without having
gone through login, although I imagine some logic in the display
manger should replicate login's job. I suppose there really should be
a standard library procedure for invoking the appropriate user shell,
or at least for finding it...

$ man 5 passwd | egrep -1 SHELL
       The command interpreter field provides the name of the user's
command language interpreter, or the name of the initial program to
       execute. The login program uses this information to set the
value of the $SHELL environmental variable. If this field is empty, it
       defaults to the value /bin/sh.

$ man login | egrep -A1 SHELL
       Your user and group ID will be set according to their values in
the /etc/passwd file. The value for $HOME, $SHELL, $PATH, $LOGNAME,
and
       $MAIL are set according to the appropriate fields in the
password entry. Ulimit, umask and nice values may also be set
according to
--
       FAKE_SHELL (string)
           If set, login will execute this shell instead of the users'
shell specified in /etc/passwd.

Reply via email to