Linux From Scratch
Prev | Chapter 5. Preparing the LFS system | Next

# Installing Bash

## Installation of Bash

Install Bash by running the following commands:

> `./configure --enable-static-link --prefix=$LFS/usr \`
> `--bindir=$LFS/bin --with-curses &&`
> `make &&`
> `make install &&`
> `cd $LFS/bin &&`
> `ln -s bash sh`

If you get errors when compiling bash that tell about not being able to find "-lcurses", these two commands should be run to create the missing symlink:

Note: Normally, the libncurses.a file resides in the /usr/lib directory but it might reside in /lib (like it does on LFS systems). Check this first and adjust the path in the following commands accordingly:

> `cd /usr/lib &&`
> `ln -s libncurses.a libcurses.a`

## Command explanations

`--enable-static-link:` This configure option causes Bash to be linked statically

`--prefix=$LFS/usr:` This configure option installs all of Bash's files under the $LFS/usr directory, which becomes the /usr directory after the user chroot'ed into $LFS or when he rebooted the system into LFS.

`--bindir=$LFS/bin:` This installs the executable files in $LFS/bin. We do this because we want bash to be in /bin, not in /usr/bin. One reason being: the /usr partition might be on a separate partition which has to be mounted at some point. Before that partition is mounted a user needs and will want to have bash available (it will be hard to execute the boot scripts without a shell for instance).

`--with-curses:` This causes Bash to be linked against the curses library instead of the default termcap library which is becoming obsolete.

`ln -s bash sh:` This command creates the sh symlink that points to bash. Most scripts run themselves via 'sh' (invoked by the #!/bin/sh as the first line in the scripts) which invokes a special bash mode. Bash will then behave (as closely as possible) as the original Bourne shell.

The `&&`'s at the end of every line cause the next command to be executed only if the previous command exists with a return value of 0 indicating success. In case all of these commands are copy&pasted on the shell, is is important to be ensured that if ./configure fails, make isn't being executed and, likewise, if make fails, that make install isn't being executed, and so forth.

## Contents

The Bash package contains the bash program

## Description

Bash is the Bourne-Again SHell, which is a widely used command interpreter on Unix systems. Bash is a program that reads from standard input, the keyboard. A user types something and the program will evaluate what he has typed and do something with it, like running a program.

Prev | Home | Next
Install all software as user root | Up | Installing Binutils