Dangers of using a non-base shell

Giorgos Keramidas keramida at ceid.upatras.gr
Tue Oct 30 04:40:18 PDT 2007

On 2007-10-29 20:50, Stephen Allen <p0036343 at 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

More information about the freebsd-questions mailing list