не могу найти историю zsh на OSX 10.8.5

не могу найти историю zsh на OSX 10.8.5

Когда я вхожу в приложение Терминал на OSX, моей оболочкой по умолчанию является /bin/bash. Ввод echo $HISTFILEуказывает мне /Users/monkeybrain/.bash_historyи head $(echo $HISTFILE)показывает, что файл содержит записи истории.

Если я затем ввожу команду zshswitch shell, происходит несколько странных вещей. Во-первых, хотя мое приглашение меняется (так что оно выглядит так, будто я в новой оболочке), моя $SHELLпеременная окружения по-прежнему указывает на /bin/bash. $HISTFILEТеперь переменная пуста, и такого файла как ~/.zsh_history. Кроме того, я не могу использовать Ctrl-Aили Ctrl-Eдля перемещения по командной строке.

Что тут происходит?

Большое спасибо,

МБ

решение1

  • Переменная окружения SHELLобычно не изменяется оболочкой. Обычно она содержит полный путь к оболочке входа текущего пользователя,нетзапущенная в данный момент оболочка. В большинстве случаев SHELLдолжна быть установлена ​​до запуска оболочки. zshне изменяет значение SHELLи bashвозвращает его к оболочке входа, если SHELLне было установлено.

  • По умолчанию HISTFILEне установлено в zsh. Если вы хотите сохранить историю, вам нужно установить ее в файл, который вы хотите использовать для этого:

    HISTFILE="${HOME}/.zsh_history"
    

    Вам также необходимо задать SAVEHISTположительные целые значения, чтобы указать, zshсколько строк сохранять в HISTFILE, по умолчанию это 0(СпасибоОбезьяньи мозгидля подсказки). Вы, вероятно, также захотите поднять HISTSIZE, что обозначает, сколько строк истории доступно в сеансе оболочки. По умолчанию это только 30. Например:

    HISTSIZE=2000
    SAVEHIST=2000
    

    Обычно это делается в ~/.zshrcфайле конфигурации.

  • zshпытается угадать ваши предпочтения по привязке клавиш, проверяя переменные среды EDITORи VISUAL. Если любой из них содержит строку "vi", zshбудет использоваться viinsрежим ввода. Ни Ctrl+, Aни Ctrl+ Eпо умолчанию не привязаны к этому режиму. Если вы хотите использовать emacsрежим ввода (по умолчанию в bash), вам просто нужно запустить

    bindkey -e
    

    Это также можно сделать в~/.zshrc

В целом, похоже, что вы работаете zshс конфигурацией по умолчанию. Если ее еще нет ~/.zshrc, вы можете просто создать ее и добавить необходимые настройки.

Связанный контент