Subject: Re: CVS commit: src
To: Missing - presumed fed. <greywolf@starwolf.com>
From: Robert Elz <kre@munnari.OZ.AU>
List: current-users
Date: 03/18/1999 12:48:40
    Date:        Wed, 17 Mar 1999 01:04:13 -0800
    From:        greywolf@starwolf.com (Missing - presumed fed.)
    Message-ID:  <199903170904.BAA13867@starwolf.com>

  | This is, I believe, the major point of contention, sir.  I, for one,
  | disagree only because it was written with job control in mind from the
  | start rather than having it shoehorned in as ksh and later Bourne
  | (-style) shells did.

I was trying to ignore all this noise, but I cannot let this pass.   Job
control was most assuredly shoe horned into csh, which most certainly had
nothing of the kind in mind from the beginning.

Job control came from Jim Kulp (at IIASA, in Austria, then), he did the
kernel stuff, and (I think) the csh hacks to make it work.

csh on the other hand came from Bill Joy (at Berkeley) and existed in 2BSD
(the real, original 2BSD I mean, not one of the later ones that post dated
4BSD).  There was no job control then (that came sometime after 3BSD), not
even any thought about adding anything of the kind.

Further, job control and csh don't really fit well together at all, the
internal design of csh (which is really truly horrid) doesn't allow for all
kinds of nice things (try suspending a foreach loop sometime...)


Almost none of the messages on this topic have made any sense at all.   
Certainly were it Berkeley deciding what shell ought to be made the default
shell for root, none of the noise that has been sent here would have been
considered even worthy of listening to.   Neither "we have always done it
this way", nor "this is the shell I like best" are arguments that carry any
weight at all.   Nothing has "always been" any way at all (unchanged for a
long time perhaps, but not always) and anyone can trivialy make the root
shell be whatever they like, so what anyone's particular personal preference
is shouldn't make the slightest bit of difference.

All the setting of root's shell does, in reality, is to send a message to
the newcomer community as to which shell is the recommended shell to use.
That is, new installers see that the passwd file comes with just one real
user initially installed, that one user has xxxsh as its shell, and assume
(quite sensibly) that that shell is the recommended shell for users.

For more than that, it serves no purpose - no-one (outside the host in
question) can depend upon it having any particular setting, so you can't
write anything which depends upon it in any way.  It is so easy to change
that anyone who doesn't like its current setting (and for whom it actually
matters - root's default shell hasn't had any real impact on me in years)
can set it however they like.

So, the question is which shell ought be the shell that is recommended for
new systems to give to users who don't yet have any idea which shell is
going to suit them best.   And which will then forever impact on what they
believe is the "best" interface (in general, unless you start on something
truly awful, whatever you experience first will influence you in that direction
for the rest of eternity).

For a long time - for the whole time of the CSRG BSD distributions, the best
shell for interactive use was (by a wide margin) csh.   Nothing else really
approached it (ksh, of the time anyway, was apalling).   Of course, there were
some people whose opinions differed, but they were in a very small minority.
Hence, CSRG shipped systems with csh listed as the default shell.   That's
the rationale - it wasn't because "csh came from here" or "we always ship
csh as the root shell" or anything else nearly as banal.

The question now is which is the best shell to suggest that people should
learn - that's the one that ought be picked.    If, whatever your personal
preference for a shell to use might happen to be, you still claim csh is
the answer to that question, then you have my pity.   Retiring csh (and tcsh
with it) to the wasteland of unsupported, and eventually, unshipped, software
would be an entirely reasonable decision to make now.

kre