Как Zsh отслеживает историю команд?
Я вижу два файла в моем домашнем каталоге: .zhistory
и .zsh_history
. В чем разница между ними? Файлы, кажется, содержат всю мою историю. Zsh продолжает добавлять строки к одному из них навсегда ? Разве это не сделает поиск по истории слишком медленным?
Могу ли я безопасно сделать эти файлы символическими ссылками на другое место? (например, git-репозиторий для отслеживания изменений в истории)
zsh
command-history
Амелио Васкес-Рейна
источник
источник
~/.zshrc
и / или/etc/zshrc
варианты описаны там zsh.sourceforge.net/Guide/zshguide02.html#l17Ответы:
Zsh сохраняет строки ввода (возможно, с информацией о времени) в файле, указанном переменной
HISTFILE
. Это должно быть абсолютное имя файла (иначе оно будет интерпретировано относительно того каталога, который является текущим в данный момент).Zsh не имеет встроенного значения по умолчанию для
HISTFILE
. В дистрибутив zsh входит мастер настройки для новых пользователей, который имеет~/.histfile
встроенное значение , поэтому пользователи zsh получают его по умолчанию. Oh-my-zsh поставляется сHISTFILE=.zhistory
предустановкой. Похоже, вы пробовали zsh как с настройкой по умолчанию, так и с oh-my-zsh. Проверьте свои.zshrc
(или даты файла), чтобы увидеть, какой из них вы используете в настоящее время.То, как zsh открывает файл, и, следовательно, что произойдет, если это символическая ссылка, зависит от нескольких параметров.
append_history
(установлен по умолчанию),inc_append_history
илиshare_history
задан, или когда история явно сохранена с помощьюfc -AI
, zsh добавляет к существующему файлу.Обратите внимание, что даже при этих настройках zsh иногда перезаписывает файл, как описано ниже, чтобы урезать его до размера.
hist_save_by_copy
установлена (она установлена по умолчанию с zsh 5.0, но не существует в 4.2), zsh записывает временный файл, а затем перемещает его на место после завершения. В этом случае, если файл истории был символической ссылкой, новый файл заменяет символическую ссылку.Вместо того, чтобы указывать zsh на символическую ссылку, укажите,
HISTFILE
куда вы хотите поместить файл истории.Сколько строк истории хранится, настраивается через переменные
HISTSIZE
иSAVEHIST
.HISTSIZE
максимальное количество строк, хранящихся в сеансе, иSAVEHIST
максимальное количество строк, хранящихся в файле истории.Чтобы вообще сохранить некоторую историю, вам нужно установить и то,
HISTFILE
и другоеSAVEHIST
, так как значение по умолчанию равноSAVEHIST
0. Вы также можете увеличитьHISTSIZE
(с zsh 5.0 значение по умолчанию - только 30).источник