Subject: Re: using tcsh as default root shell
To: Erik Winkler <ewinkler@erols.com>
From: Bill Studenmund <wrstuden@zembu.com>
List: port-mac68k
Date: 05/22/2000 09:30:11
On Sun, 21 May 2000, Erik Winkler wrote:

> I've been using tcsh as my default root shell since 1.3.2 and I have never
> had it fail.  I've even had a remote machine's log files fill up my hard
> drive until the kernel started killing non-essential processes(httpd,
> cron, etc) to conserve memory  and I was still able to ssh into the
> machine (I was at about -7000 in disk space at that point.)  Maybe tcsh
> was unstable back in the day, but that's not the case now.

It's not tcsh's instability which is the concern. :-)

My solution is to have root => csh, and croot => tcsh.

> Jeffrey Ohlmann wrote:
> 
> > It's been a while, but I can recall discussion here once of reasons not
> > to make tcsh the shell for root in /etc/passwd. However, someone did
> > mention that if tcsh were compiled with static links (or something to
> > that effect) it would be okay.
> >
> > If anyone understands what I'm getting at, I'd appreciate a point in
> > the right direction.

NetBSD has shared libraries. Programs linked with them do not embed the
contents of the library in each program, but rather pull it in at
run-time. This permits all of the programs so linked to share one copy of
the library. Also, if a bug is fixed in one library, by changing the
shared library, all these programs get the new, fixed library.

Loading in the library at run-time is called dynamic linking. It's
opposite is static linking.

Shared libraries can be a big win. I once linked Khorus, a graphics
system, on an AIX machine. Totally static, it came in at 50 MB. With
shared libraries for its internal routines, it came in at 20 MB.

The problem with them, and why you really don't want your only root shell
using them, is that if you mess up a shared library, ALL the programs
which use it are unusable. For instance, if you don't have /usr mounted,
do shared libraries. Also, if you're doing development and mess up libc
(or you're tracking -current and someone else does), your machine is now
unusable. :-)

Take care,

Bill