Wie kann ein separater Befehlsverlauf für verschiedene Sitzungen für denselben Benutzer erstellt werden?


8

Ich habe dieses Problem auf einigen Unix-Servern. Wenn ich eine andere Sitzung für denselben Benutzer öffne, wird der Befehlsverlauf von der gesamten Sitzung gemeinsam genutzt. Dies führt zu Problemen, wenn ich versehentlich Ctrl-Poder drücke up arrowund einfach die Eingabetaste drücke. Einmal lief ich rm -rf *dankenswerterweise in einem Verzeichnis, in dem ich keine Berechtigung zum Entfernen von Dateien habe.

Wie kann ein separater Befehlsverlauf für verschiedene Sitzungen für denselben Benutzer erstellt werden? Die meiste Zeit benutze ich ksh- und tcsh-Shells.

Antworten:


8

Aus der ksh-FAQ :

Q1. Wie erhalte ich separate Verlaufsdateien für die Shell?

A1. ksh verwendet eine gemeinsam genutzte Verlaufsdatei für alle Shells, die denselben Namen für die Verlaufsdatei verwenden. Dies bedeutet, dass in einem Fenster eingegebene Befehle von Shells in anderen Fenstern angezeigt werden. Um separate Fenster zu erhalten, muss die Variable HISTFILE auf einen anderen Namen gesetzt werden, bevor der erste Verlaufsbefehl erstellt wird.


11

Sie können HISTFILE=~/.hist$$zu Ihrem hinzufügen .profile. Dies sollte eine eindeutige Datei pro Sitzung generieren.

Sie werden am Ende eine große Anzahl von haben, .hist*daher schlage ich vor, dass Sie sie gelegentlich entfernen.


2

Ich gehe davon aus, dass Sie über gleichzeitige Sitzungen sprechen. Das Trennen von Sitzungen nacheinander ist nicht sehr nützlich: Sie könnten den Verlauf nie mehr verwenden, da alle Sitzungen eindeutig wären. Wenn dies der Fall wäre, wäre es wahrscheinlich besser, nur den Befehlsverlauf zu deaktivieren.

Wenn wir über das Trennen der gleichzeitigen Sitzung sprechen, würde ich die Verwendung von Bash empfehlen. Ich bin mir ziemlich sicher, dass ich den Befehlsverlauf nicht aus zwei gleichzeitig gemischten Sitzungen erhalte. Bash schreibt den Verlauf nur .bash_historybeim Abmelden in, sodass der Befehlsverlauf erst nach dem Abmelden gemischt wird. Vorausgesetzt, dass die Verwendung von Bash akzeptabel ist, würde dies Ihr Problem lösen?


Danke für deine Antwort. Ich arbeite an HP-UX und es ist kein Bash installiert und ich habe keine Erlaubnis, es zu installieren :(.
Hemant

1

Ich werde etwas zu Gerts Antwort hinzufügen.

Gert's

Sie können Ihrem .profile HISTFILE = ~ / .hist $$ hinzufügen. Dies sollte eine eindeutige Datei pro Sitzung generieren.

Bergwerk

Sie können diese Dateien automatisch entfernen, indem Sie Folgendes hinzufügen.

trap 'rm ${HISTFILE}' exit


2
Seien Sie etwas umsichtig in Bezug auf Ausgangsfallen - die Shell stapelt sie nicht so, wie Sie vielleicht hoffen -, sodass jede weitere Einstellung einer Ausgangsfalle alle vorherigen überschreibt. Ich habe einen Stapler für Fallen geschrieben, aber er hat fast jede mentale Zündschnur durchgebrannt, die ich hatte.
David Collier

-1

Ich kann den Bildschirm nicht installieren. Es wird nicht einmal auf meinem Server kompiliert.
Hemant

Ich bin mir nicht sicher, wie der Bildschirm Ihnen diese Fähigkeit überhaupt geben würde
Michael Mrozek

@Michael Sie können verschiedene Sitzungen mit Bildschirm haben und Bildschirm hat seine eigene Geschichte. Ich weiß nicht, dass mir jemand gesagt hat, ich solle mein Problem mit dem Bildschirm lösen ... Ich mochte den Bildschirm nicht. lahm, dass dies heruntermodifiziert wurde, als meine zweite Antwort im Wesentlichen dieselbe war wie die anderen, die hochmodifiziert wurden. @Hemant ... und das sollte ich wissen? Ich benutze keinen Bildschirm, um dies auf meinem System zu tun. Ich weiß nur, dass es einen ähnlichen Effekt ermöglicht, der richtig gemacht wird.
Xenoterracide

Ich glaube, ich weiß, was Sie beschreiben, aber es ist keine Bildschirmfunktion, sondern nur ein Nebeneffekt der Funktionsweise von Muscheln. Wenn Sie zwei Shells öffnen, werden die eingegebenen Befehle nicht im Verlauf des anderen angezeigt, es sei denn, die Shell unterstützt dies ausdrücklich (z. B. ZSH, Sie müssen es jedoch explizit aktivieren). Es werden keine separaten Historien gespeichert, beide schreiben in die Hauptverlaufsdatei. Sie können die Änderungen von jeder Shell nicht sehen, da Shells nach dem Laden normalerweise nicht nach Änderungen der Verlaufsdatei suchen
Michael Mrozek

@MichaelMrozek Die Korn-Shell hat einen gemeinsamen Verlauf für alle Fenster, dieser kann nicht deaktiviert werden. Die Verwendung screenhilft überhaupt nicht.
FUZxxl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.