Ich benutze Emacs für fast alles, aber wenn ich Shell M-x shell
starte und dann Emacs beende, wird der Verlauf nicht gespeichert. Ich habe es (savehist-mode 1)
zu diesem Zweck versucht, aber es scheint nicht zu funktionieren. Gibt es eine Möglichkeit, den Verlauf der zu speichern? Befehle in Emacs verwendet und verwenden, wenn ich Shell außerhalb von Emacs verwenden?
shell
emacs
ubuntu-12.04
poz2k4444
quelle
quelle
~/.bash_history
, wiebash
in einem gewöhnlichen Terminal-Emulator gespeichert werden . Ich bin mir nicht sicher, warum Sie ein anderes Verhalten sehen würden. Welche Shell laufen Sie und wie ist sie in Bezug auf die Geschichte konfiguriert?M-x shell
und wenn ich den Puffer töten sie nicht die Geschichte speichern, ich der einzige Versuch tat , war, legte(savehist-mode 1)
in.emacs
Datei aber immer noch kann ich nicht Siehe die Befehle in emacssavehist-mode
Gilt standardmäßig nur für die Minipuffereingabe und ist daher hier nicht anwendbar (obwohl Sie es allgemein nützlich finden könnten). Höchstwahrscheinlich ist dies Ihre Anmeldeshellbash
, und ich habe häufig festgestellt, dass der Verlauf standardmäßigbash
erst gespeichert wird, wenn der Prozess ordnungsgemäß beendet wird, dh beim Abmelden. Dies geschieht nicht, wenn Sie den Shell-Puffer mitC-x k
oder ähnlichem beenden. In diesem Fall wird der Shell-Prozess beendet und nicht automatisch beendet. Wenn Sie das gerade tun, versuchen Sie es mitlogout
oderexit
in Ihrem Shell-Puffer, bevor Sie den Puffer löschen, und prüfen Sie, ob der Verlauf gespeichert wird.ps -p $$
über die Befehlszeile bestimmen . Der Wert unter 'CMD' in der Ausgabe ist der von Ihnen verwendete Shell-Wert. Höchstwahrscheinlich ist dies der Fallbash
. Wenn dies nicht der Fall ist, fügen Sie einen Kommentar hinzu, um anzugeben, um was es sich handelt und vielleicht kann Ihnen jemand von dort ausbash
weiterhelfen - ich benutze nur mich selbst, kann also nicht viel helfen, wenn Sie etwas anderes verwenden.)Antworten:
savehist-mode
trifft hier nicht zu; Der Grund für dieses Problem ist, dass Bash standardmäßig nur dann in die Verlaufsdatei schreibt, wenn der speicherinterne Verlaufspuffer voll ist oder beim Beenden. Letzteres nur, wenn er ordnungsgemäß beendet wird - das ist ein Bash Ein Prozess, der nicht beendet, sondern beendet wird, schreibt niemals die letzten Befehle in die Verlaufsdatei.Um das Problem zu umgehen, stellen Sie sicher, dass Sie Ihre Shell-Sitzung immer sauber beenden , indem Sie die Shell-Puffer ausführen
logout
oder an der Eingabeaufforderungexit
eingebenC-d
, bevor Sie sie löschen. Dies gibt Bash die Möglichkeit, die Verlaufsdatei vor dem Beenden zu schreiben.In den häufig gestellten Fragen zu Bash zur Verwaltung von Verlaufsdateien finden Sie auch einige Vorschläge, wie Bash jeden Befehl in den Verlauf schreiben kann, sobald er ausgeführt wird. Sobald Sie damit fertig sind, müssen Sie sich nicht mehr darum kümmern, sich von Ihren Muscheln abzumelden, bevor Sie deren Puffer töten, sondern können dies
C-x k
mit wilder Hingabe tun.quelle