Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Oct 2007 13:39:12 +0200
From:      Giorgos Keramidas <keramida@ceid.upatras.gr>
To:        Stephen Allen <p0036343@brookes.ac.uk>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Dangers of using a non-base shell
Message-ID:  <20071030113912.GB3941@kobe.laptop>
In-Reply-To: <472647A0.3030009@brookes.ac.uk>
References:  <472647A0.3030009@brookes.ac.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2007-10-29 20:50, Stephen Allen <p0036343@brookes.ac.uk> wrote:
> It's been drawn to my attention not to use bash from the ports
> collection, because if one of it's dependencies (gettext or libiconv)
> fails or is updated significantly, it could break, and prevent
> login. The suggested solution was to use a base shell (such as sh) and
> append 'bash -l' to .shrc to automatically enter bash.
>
> The quite annoying side-effect is having to type 'exit' twice to get
> out of a su shell or screen.
>
> Would it be a better idea to use the pre-compiled binary for bash?
> And if I did so, could I be alerted to updates as easy as using
> 'pkg_version -v' when checking if any ports need updating?

I've been using the following for some time:

    keramida> su -
    Password: ********
    root# exec env SHELL=/usr/local/bin/bash bash -l

The same trick works with s/bash/mksh/ or s/bash/pdksh/, as far as I can
tell, and tcsh's history mechanism makes it easy to run the same command
later.  All I have to type is "exec " and hit the arrow-up key :)

The env(1) trick makes sure that sub-shells use bash(1) too, and 'exec'
reduces the number of 'exit' commands I have to type.

Now, if there's a problem with bash(1), I will probably have to su
again, but that's less trouble than being locked out because gettext has
broken, the *default* root shell is bash and _that_ fails all the time.

- Giorgos




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