Історія команд у Zsh


61

Як Zsh відстежує історію команд?

Я бачу два файли у своєму домашньому каталозі: .zhistoryі .zsh_history. У чому різниця між ними? Файли, здається, містять усю мою історію. Чи Zsh зберігає додавання рядків до одного з них назавжди ? Хіба це не зробить пошук історії занадто повільним?

Чи можу я безпечно зробити ці файли символічними посиланнями на інше місце? (наприклад, сховище git для відстеження змін в історії)


Перевірте свої ~/.zshrcта / або /etc/zshrcваріанти, описані там zsh.sourceforge.net/Guide/zshguide02.html#l17
UVV

Відповіді:


78

Zsh зберігає рядки введення (можливо, з інформацією про час) у файлі, позначеному змінною HISTFILE. Це має бути абсолютним ім'ям файлу (інакше воно буде інтерпретуватися відносно того, який каталог наразі є поточним).

Zsh не має вбудованого значення за замовчуванням для HISTFILE. Розподіл zsh поставляється з майстром налаштування для нових користувачів, у якого ~/.histfileвбудоване значення , тож це те, що користувачі 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 перезаписує наявний файл на місці.

Замість того, щоб вказувати zsh на символічне посилання, встановіть, HISTFILEде ви хочете, щоб файл історії був.

Скільки рядків історії зберігається налаштовано через змінні HISTSIZEта SAVEHIST. HISTSIZE- максимальна кількість рядків, що зберігаються в сеансі, і SAVEHISTмаксимальна кількість рядків, що зберігаються у файлі історії.

Щоб зберегти історію, вам потрібно встановити і те, HISTFILEі SAVEHIST, як значення за замовчуванням SAVEHIST- 0. Ви можете також збільшити HISTSIZE(станом на zsh 5.0, за замовчуванням - лише 30).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.