Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Oct 2000 16:29:07 -0700 (PDT)
From:      Dima Dorfman <dima@unixfreak.org>
To:        Mike Eldridge <diz@cafes.net>
Cc:        media@mail1.nai.net, freebsd-questions@FreeBSD.ORG
Subject:   Re: changing root shell??
Message-ID:  <20001013232907.8EA7B1F0D@static.unixfreak.org>
In-Reply-To: <Pine.LNX.4.10.10010131738510.15143-100000@mail.cafes.net> "from Mike Eldridge at Oct 13, 2000 05:49:56 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
> On Fri, 13 Oct 2000 media@mail1.nai.net wrote:
> > I thought I was running sh.  For some stupid reason I though sh was the
> > default Unix shell.  Maybe I should stop using a kerosene heater and wear a
> > helmet.  As it turns out, root is csh.  I've been entering commands with sh
> > syntax all along.  I haven't received any syntax errors.  Does this mean I
> > could have trashed my system without knowing it??
> 
> I'm not sure about FreeBSD (since I haven't gotten it installed on my
> alpha yet, so assume me to be a freebsd newbie =P), but under Linux
> (redhat at least), /bin/sh is a symbolic link to /bin/bash.  I don't
> like

/bin/sh is not bash on FreeBSD.  /bin/bash doesn't even exist.

> > >Which is now part of the base system; csh is a hard link to tcsh:
> > >
> > >      # ls -li `which csh tcsh`
> > >      335 -r-xr-xr-x  2 root  wheel  622684 15 Jul 01:46 /bin/csh
> > >      335 -r-xr-xr-x  2 root  wheel  622684 15 Jul 01:46 /bin/tcsh
> > 
> > My tcsh is in /usr/local/bin/tcsh, which wouldn't work in single user mode.
> 
> That's bad.  All files that are integral to the system (ie, required 
> for the system to boot in single user mode for rescue, recovery,
> etc) should be in the root filesystem.  You'll find that most all
> basic, useful binaries are located in /bin (ie, ls, sh, touch, su,
> > >rm,

Actually, touch and su are in /usr/bin.

> etc).  Your tcsh should be in /bin.

Tcsh is in /bin in the default install since somewhere between
4.0-RELEASE and 4.1-RELEASE.

> 
> > At 9:46 AM +0930 07/19/00, Greg Lehey wrote:
> > >
> > >This is the real point.  Why learn two shells when you can make do
> > >with one?  At some point you'll need to know the a Bourne shell family
> > >member, so why bother learning a csh shell?
> > 
> > This is the guy who wrote the @$#%* book, yet FreeBSD still starts up as
> > csh!!  In his book he says he uses bash.  I've installed bash, but his book
> > also explains that I can't use it as root because it's dynamically linked
> > (whatever that means).
> 
> So change it.  Change it /bin/bash.  Dynamically linked means that
> the

Unless you put it there, which you probably shouldn't, IMO, it isn't
there.

> binary was linked to a shared object library that has to be loaded every
> time you want to run the program.  I have no clue why he would say that
> you couldn't use it because it's dynamically linked.  Of course you can
> use it if it's dynamically linked.  Just make sure that any libs that it
> is linked to aren't out of reach in an emergency situation.

Libc is in /usr/lib, so unless your / and /usr are on the same
filesystem, the required libraries would be out of reach.  If you
really want to use bash as your root shell--this is probably a bad
idea--you can manually compile a statically-linked copy and name it
something like /sbin/bash.static--I used to do this with tcsh before
it was in the base system.

> 
> > I have heard that you should not change your root shell.  However, sh seems
> > to be in /bin on the root filesystem.  So I don't see how that would cause
> > problem.  How would I go about changing it??  I'd also like to change my
> > default editor (as I find vi very cumbersome).  The book refers to editing
> > files, but I can't seem to find which files I'm supposed to edit.

You can change it to /bin/sh with little or no consequences.

> 
> Edit /etc/passwd and change the /bin/sh or /bin/csh or what-have-you to
> whatever you want your shell to be.

/etc/passwd is generated from /etc/master.passwd.  You should use
`vipw`, or failing that, edit /etc/master.passwd and rebuild the
password databases (something like `pwd_mkdb -p /etc/passwd`, I
think).

> If you don't want to use vi, simply use another editor.  Instead of typing
> vi, type pico or type emacs (assuming these are installed).

Setting the environment variable EDITOR will make some programs--vipw,
chsh, and crontab, for example--use the editor you specify.  In
(t)csh, the syntax to do that is: "setenv EDITOR emacs" where emacs is
the editor you would like to use.  I'm not sure about the (ba)sh
syntax, but I believe it's something like "export EDITOR=emacs".

Hope this helps

-- 
Dima Dorfman <dima@unixfreak.org>
Finger dima@unixfreak.org for my public PGP key.

"Natural ability without education has more often raised a man to glory and
virtue than education without natural ability."
        -- Marcus Cicero


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001013232907.8EA7B1F0D>