.bash_history für mehrere Shells

Du kennst das. Du hast ein Terminal geöffnet und tippst fleißig deine Befehle ein, öffnest ein zweites Terminal und – es erinnert sich nicht an die gerade eben eingetippten Kommandos. Und es kommt sogar noch schlimmer: Wenn du zuerst das erste Terminal und danach das Zweite schließt, werden die Befehle des ersten Terminals aus der Datei ~/.bash_history überschrieben. Doppelt nervig.

Die Bash speichert die .bash_history nur beim schließen eines Terminals, und nicht nach jedem eingetippten Kommando. Das lässt sich leicht ändern:

nano ~/.bashrc

(An Ubuntuuser: Man beachte, kein sudo hier. Die Datei gehört dem User, nicht dem System. Und selbstverständlich lässt sich auch jeder andere Texteditor wie gedit, kate, vi oder emacs nehmen.)

Füge nun die folgenden Zeilen hinzu:

shopt -s histappend
PROMPT_COMMAND='history -a'

und speichere das ganze ab (In Nano mit Strg+O. “^” steht in den meisten Fällen für Strg. Also macht die Statuszeile in Nano doch ein wenig Sinn. ;) )

Dies sorgt dafür, dass der Kommandoverlauf von der Bash angehängt (und nicht einfach überschrieben) wird. Ausserdem wird jedes mal, wenn ein Prompt ausgegeben wird, abgespeichert.


Über diesen Beitrag


  1. Oliver 4.12.2007 / 8:04

    Na das ist doch mal ein super Tipp. Ehrlich gesagt hat mich das schon immer gestört, habe aber nie nach einer Lösung gesucht. Danke.

  2. Klemens 4.12.2007 / 8:54

    Hi!

    Bei SuSE 10.2 musste ich statt
    PROMPT_COMMAND=’history -a’
    dann
    PROMPT_COMMAND="history -a"
    einfügen, weil sonst immer folgende Meldung beim Shell-Öffnen erschien:
    bash: -a’: command not found

    Grüße

  3. Jeremy 4.12.2007 / 13:42

    @Oliver: Mir gings genauso. Bin selbst auch nur zufällig über die Lösung gestolpert.

    @Klemens: Eigenartig, aber danke für den Hinweis.

  4. jesse 4.12.2007 / 14:49

    Netter Tipp, danke!
    Wie das mit der bashrc geht wusste ich bisher nicht.

  5. meillo 6.12.2007 / 14:04

    Ob man ‘ (einfache Anführungstriche) oder ” (doppelte Anführungszeichen verwendet ist egal. Es dürfen nur keine ` (Backticks) sein.
    (Den umgedrehten Backtick: ´ (wie heißt der eigentlich) verwendet man ja sowieso nie.)

    Ich hab diesen Tipp vor einigen Monaten im Internet gelesen und finde ihn ebenfalls sehr sinnvoll.

  6. thomasg 6.4.2008 / 13:39

    Wie schon erwähnt kann man sowohl Anführungszeichen (Unicode U+201C “) als auch Apostroph-Ersatzzeichen (Unicode U+0027 ‘) verwenden – das Problem ist, dass WordPress hier die Apostroph-Ersatzzeichen durch echte Apostrophen (Unicode U+2019) ersetzt, weswegen Copy’n'Paste hier nicht funktioniert.
    Selbst tippen ist angesagt. :)

Hinterlasse einen Kommentar

XHTML: Folgende Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>




Safari hates me