..png)
Ich habe gelesen, dass ksh im Gegensatz zu bash seinen Verlauf nach jedem Befehl leert. Das mag für viele gut sein, aber mich macht es wahnsinnig!
Ich habe mehrere Fenster geöffnet, die für ihre eigenen Aufgaben geöffnet sind, und die Freigabe dieses Verlaufs bringt den spezifischen Sitzungsverlauf von Befehlen durcheinander.
Gibt es eine Möglichkeit, dieses Leeren zu deaktivieren, sodass der Verlauf nur beim Abmelden an den Befehlsverlauf angehängt werden kann?
Oder gibt es vielleicht eine Möglichkeit, den Verlauf so anzufordern, dass der Befehlszeilenverlauf nicht jedes Mal aktualisiert wird?
Antwort1
Früher habe ich mehrere Shells in ausgeführt screen
. In meiner .khsrc habe ich mehrere Einstellungen angepasst, darunter $PS1 und $HISTFILE (und den Basisnamen des TTY-Geräts eingefügt).
Dies ließ sich relativ einfach rekonstruieren:
tty=$(basename $(tty))
histdir=~/.hist
mkdir -p $histdir
export HISTFILE=$histdir/history.$tty
export PS1=$USER@'$PWD ['$tty'] ${?#0}$ '
exec /usr/bin/ksh
Speichern Sie dies unter ~/bin/screenshell
und führen Sie es aus chmod +x ~/bin/screenshell
. Jetzt können Sie es ausführen screen
und haben separate Verlaufsdateien für jedes Fenster.
SHELL=~/bin/screenshell screen
Beispiele:
Fenster 3
vagrant@/home/vagrant [3] 127$ history
1 history
2 error
3 history
Fenster 4
vagrant@/home/vagrant [4] $ history
1 history
vagrant@/home/vagrant [4] $ echo $HISTFILE
/home/vagrant/.hist/history.4
vagrant@/home/vagrant [4] $ tty
/dev/pts/4
Eine Alternative wäre die Ausführung exec ksh
von .kshrc
, aber dazu benötigen Sie eine Art Test, um eine Exec-Schleife zu verhindern.