Installieren der Bourne-again shell (bash) auf WR-TR703N anstatt der Almquist-Shell (ash)

Nach dem Installieren von OpenWrt ist die Almquist-Shell (ash) installiert. Da die ash im Vergleich zu anderen modernen Shells sehr geringe Ansprüche an Speichergröße und Rechnergeschwindigkeit stellt, wird sie in OpenWrt und anderen Embedded-Linux-Systemen verwendet.

Welche Shell aktiv ist kann mit

echo $SHELL

auf der Konsole angezeigt werden. Obwohl der Befehl ja nur den Inhalt der Variable SHELL ausgibt, und die muss ja nicht immer richtig gesetzt sein.
Es reicht auch ein
echo $0

welches dann
-bash
oder je nach Shell einen Wert ausgibt.

So nun wollen wir die bash installieren weil sie komfortabler und gebräuchlicher ist.
opkg update
opkg install bash

in /etc/passwd
in der ersten Zeile, der root Zeile die bash eintragen:
root:x:0:0:root:/root:/bin/bash

dann eine Datei .bash_profile anlegen mit folgenden Inhalt:

echo ". $HOME/.bashrc" > /root/.bash_profile

dann eine eigene .bashrc Datei mit den User-Einstellungen anlegen, oder diese verwenden:

wget -P /root/ http://wenzlaff.de/download/linux/.bashrc

Nach dem ausloggen und einloggen steht die bash zur Verfügung, was leicht mit

$ echo $SHELL
getestet werden kann, es wird dann ausgegeben:
/bin/bash

3 Antworten auf „Installieren der Bourne-again shell (bash) auf WR-TR703N anstatt der Almquist-Shell (ash)“

  1. Evtl. sollte man auch den symlink /bin/sh umbiegen, damit Skripte auch immer von bash ausgeführt werden und nicht von der busybox:
    ln -v -f -s /bin/bash /bin/sh

    Auch wäre zu erwähnen, dass mit dieser Änderung der Shell nicht automatisch alle bash-Skripte von Linux-Desktop-Systemen auch unter OpenWrt sofort laufen.
    Mit der Installation der bash bekommt man nur die Syntax und die built-ins von bash.
    Viele typische Linux-Kommandos sind aber Programm in /bin.
    Unter Desktop-Linux sind das meist die aktuellen GNU Varianen, z.b. find aus den GNU fileutils.
    Unter OpenWrt sind das aber nur symlinks auf die busybox.
    ls -al /bin
    Daher findet z.b. der find-Befehl mit der Option -samefile unter OpenWrt nur Hardlinks aber keine Symlinks.

  2. Nachtrag:
    Nur nach Ausloggen und Einloggen stand die bash noch NICHT zur Verfügung.
    Erst nach einem reboot des Routers hat PuTTY auf die bash geführt.
    $SHELL gab vor dem reboot schon ‚/bin/bash‘ aber $0 noch ‚-sh‘ zurück und gestartet wurde nur die busybox.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.