
Когда я вхожу в приложение Терминал на OSX, моей оболочкой по умолчанию является /bin/bash
. Ввод echo $HISTFILE
указывает мне /Users/monkeybrain/.bash_history
и head $(echo $HISTFILE)
показывает, что файл содержит записи истории.
Если я затем ввожу команду zsh
switch 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
, вы можете просто создать ее и добавить необходимые настройки.