1

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

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

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

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

мегабайт

1 ответ1

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

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

    HISTFILE="${HOME}/.zsh_history"
    

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

    HISTSIZE=2000
    SAVEHIST=2000
    

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

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

    bindkey -e
    

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .