Intereting Posts
i3 Менеджер Windows – назначение окна в рабочее пространство Невозможно смонтировать разделы / разделы, не распознанные в Solaris 11.1 Может кто-нибудь объяснить мне эту хвост + линию? Как автоматически получить новый сервер имен в VPN-подключении Я хочу найти слово и заменить его новым новым словом в новой строке df человеко-читаемый расчет Как сказать grep, чтобы соответствовать специальному символу в начале каждого слова Разница между криптоптами и криптоватой раздражающее сообщение «Соединение X11 отклонено из-за неправильной аутентификации», в то время как нет никакой проблемы вообще Почему не копирование больших файлов не позволяет Linux перейти в режим энергосбережения? Как я могу сделать автоматический клик для сервера Centos? Удалить все скобки в имени файла Убить tcpdump процесс, порожденный ssh, когда ssh умирает Веб-камера Skype перевернулась, но v4l1compat отсутствует DHCP-сервер: предлагает разные адреса подсети для разных интерфейсов

История команд в Zsh

Как Zsh отслеживает историю команд?

Я вижу два файла в моем домашнем каталоге: .zhistory и .zsh_history . В чем разница между ними? Кажется, что файлы содержат всю мою историю. Заставляет ли Zsh добавлять строки к одному из них навсегда ? Разве это не заставило бы историю искать слишком медленно?

Могу ли я безопасно сделать эти файлы символическими ссылками на другое место? (например, репозиторий git для отслеживания изменений в истории)

Zsh сохраняет строки ввода (возможно, с информацией о времени) в файле, указанном переменной HISTFILE . Это должно быть абсолютное имя файла (иначе оно будет интерпретироваться по отношению к любой директории, текущей в то время).

Zsh не имеет встроенного значения по умолчанию для HISTFILE . В дистрибутив zsh входит мастер установки для новых пользователей, у которого есть значение ~/.histfile , поэтому это то, что пользователи zsh получают по умолчанию. Oh-my-zsh поставляется с HISTFILE=.zhistory preset. Таким образом, похоже, что вы пробовали 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 перезаписывает существующий файл на месте.

Вместо того, чтобы указывать zsh на символическую ссылку, установите HISTFILE в любом месте файла истории.

Сколько строк истории сохранено, настраивается через переменные HISTSIZE и SAVEHIST . HISTSIZE – это максимальное количество строк, которые хранятся в сеансе, а SAVEHIST – максимальное количество строк, хранящихся в файле истории.

Чтобы вообще сохранить какую-либо историю, вам нужно установить как HISTFILE и SAVEHIST , поскольку значение SAVEHIST по умолчанию равно 0. Возможно, вы захотите также увеличить HISTSIZE ( HISTSIZE с zsh 5.0, значение по умолчанию – всего 30).