
Wenn ich mich bei der Terminal-App unter OSX anmelde, ist meine Standard-Shell /bin/bash
. Durch Eingabe echo $HISTFILE
werde ich auf weitergeleitet /Users/monkeybrain/.bash_history
und head $(echo $HISTFILE)
es wird mir angezeigt, dass die Datei Verlaufseinträge enthält.
Wenn ich dann eingebe, zsh
um die Shell zu wechseln, passieren ein paar seltsame Dinge. Erstens, obwohl sich meine Eingabeaufforderung ändert (so dass es aussieht, als wäre ich in der neuen Shell), $SHELL
zeigt meine Umgebungsvariable immer noch auf /bin/bash
. Die $HISTFILE
Variable ist jetzt leer und es gibt keine Datei wie ~/.zsh_history
. Außerdem kann ich nicht Ctrl-A
oder verwenden Ctrl-E
, um mich durch die Befehlszeile zu bewegen.
Was passiert hier?
Vielen Dank,
MB
Antwort1
Die
SHELL
Umgebungsvariable wird normalerweise nicht von der Shell geändert. Sie enthält normalerweise den vollständigen Pfad zur Login-Shell des aktuellen Benutzers.nichtdie aktuell ausgeführte Shell. In den meisten FällenSHELL
sollte dieser Wert vor dem Start einer Shell festgelegt werden.zsh
Ändert den Wert nichtSHELL
undbash
setzt ihn auf die Login-Shell zurück, wennSHELL
er nicht festgelegt war.Standardmäßig
HISTFILE
ist es nicht gesetztzsh
. Wenn Sie den Verlauf speichern möchten, müssen Sie ihn auf die Datei setzen, die Sie dafür verwenden möchten:HISTFILE="${HOME}/.zsh_history"
Sie müssen auch
SAVEHIST
positive Ganzzahlen angeben, um anzugeben,zsh
wie viele Zeilen im gespeichert werden sollenHISTFILE
. Der Standardwert ist0
(DankeAffenhirnfür den Hinweis). Sie möchten wahrscheinlich auch erhöhenHISTSIZE
, was angibt, wie viele Verlaufszeilen in der Shell-Sitzung verfügbar sind. Der Standardwert ist nur30
. Beispiel:HISTSIZE=2000 SAVEHIST=2000
Dies geschieht normalerweise in der
~/.zshrc
Konfigurationsdatei.zsh
versucht, Ihre Tastenbelegungseinstellungen zu erraten, indem die UmgebungsvariablenEDITOR
und überprüft werdenVISUAL
. Wenn eine der Variablen die Zeichenfolge „vi“ enthält, wird der Eingabemoduszsh
verwendet . Weder + noch + sind in diesem Modus standardmäßig gebunden. Wenn Sie den Eingabemodus (die Standardeinstellung in ) verwenden möchten, müssen Sie nur ausführenviins
CtrlACtrlEemacs
bash
bindkey -e
Dies kann auch in
~/.zshrc
zsh
Alles in allem klingt es so, als ob Sie mit der Standardkonfiguration arbeiten . Wenn ~/.zshrc
noch keine vorhanden ist, können Sie diese einfach erstellen und die erforderlichen Einstellungen hinzufügen.