Wie teile ich den Verlauf zwischen Terminal-Registerkarten?

23

Normalerweise verwende ich in meinem Terminal unter OS X zwei oder drei Registerkarten.

Ein kleiner Nachteil ist, dass die Registerkarten standardmäßig nicht den Befehlsverlauf gemeinsam nutzen. Wenn Sie also nach einem vorherigen Befehl suchen, den ich durch Eingabe auf einer anderen Registerkarte ausgeführt habe, wird dieser history | grep thingIamlooking fornicht gefunden.

Gibt es eine Möglichkeit, die Freigabe des Verlaufs von Terminal-Registerkarten zu erzwingen, oder gibt es einen anderen Befehl " history_of_all_tabs "?

Joe
quelle

Antworten:

29

Ich glaube nicht, dass es eine Möglichkeit gibt, den Verlauf nur auf den Registerkarten des Terminals zu teilen, aber hier ist etwas, das Ihnen helfen könnte.

Der Verlauf wird nicht von Ihrem Terminal verwaltet, sondern von Ihrer Shell (bash, tcsh, zsh usw.).

Mit den folgenden Optionen können Sie einen gemeinsamen Verlauf für alle Terminalfenster (die Shell-Instanzen) einrichten.

Dies sollte sich irgendwo in Ihrer .bashrcDatei befinden.

export HISTCONTROL=ignoredups:erasedups  # no duplicate entries
export HISTSIZE=100000                   # big big history
export HISTFILESIZE=100000               # big big history
shopt -s histappend                      # append to history, don't overwrite it

# Save and reload the history after each command finishes
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Leben
quelle
1
+.5 für eine gute Antwort, +.5 für eine gute Grammatik;)
Matt
@Lifelys Lösung funktioniert bei mir in El Capitan nicht. Überhaupt. Sogar die maximale Länge der Verlaufsdatei. Gibt es seit 2012 eine neue Lösung? (Ich hätte oben kommentiert, habe aber nicht den Repräsentanten)
JP Duffy
1
Dies funktioniert für mich (in .bash_profile hinzugefügt) in El Capitan mit dem Zusatz export SHELL_SESSION_HISTORY = 0 in meinem .bash_profile und dem folgenden Befehl: touch ~ / .bash_sessions_disable
Andy
Funktioniert hervorragend auf Ubuntu 18.04 für Bash
anon58192932