W jaki sposób Zsh śledzi historię poleceń?
W moim katalogu domowym widzę dwa pliki: .zhistory
i .zsh_history
. Jaka jest różnica między nimi? Pliki wydają się zawierać całą moją historię. Czy Zsh ciągle dodaje linie do jednego z nich na zawsze ? Czy nie spowodowałoby to zbyt wolnego wyszukiwania historii?
Czy mogę bezpiecznie utworzyć te pliki symbolicznymi linkami do innej lokalizacji? (np. repozytorium git do śledzenia zmian w historii)
zsh
command-history
Amelio Vazquez-Reina
źródło
źródło
~/.zshrc
i / lub/etc/zshrc
opcje tam opisane zsh.sourceforge.net/Guide/zshguide02.html#l17Odpowiedzi:
Zsh przechowuje linie wejściowe (ewentualnie z informacją o czasie) w pliku wskazanym przez zmienną
HISTFILE
. Powinna to być bezwzględna nazwa pliku (w przeciwnym razie zostanie zinterpretowana w stosunku do bieżącego katalogu).Zsh nie ma wbudowanej wartości domyślnej dla
HISTFILE
. Dystrybucja zsh zawiera kreatora konfiguracji dla nowych użytkowników, który ma~/.histfile
wbudowaną wartość , więc domyślnie otrzymują to użytkownicy zsh. Oh-my-zsh maHISTFILE=.zhistory
preset. Wygląda na to, że wypróbowałeś Zsh zarówno z domyślną konfiguracją, jak iz Oh-My-Zsh. Sprawdź.zshrc
datę (lub datę pliku), aby zobaczyć, której aktualnie używasz.To, jak zsh otwiera plik, a co za tym idzie, jeśli jest to dowiązanie symboliczne, zależy od kilku opcji.
append_history
(ustawiona domyślnie)inc_append_history
lubshare_history
jest ustawiona, lub gdy historia jest zapisana jawnie za pomocąfc -AI
, zsh dołącza się do istniejącego pliku.Zauważ, że nawet przy tych ustawieniach, zsh czasami zastępuje plik, jak opisano poniżej, aby przyciąć go do rozmiaru.
hist_save_by_copy
jest ustawiona (jest ustawiona domyślnie od zsh 5.0, ale nie istnieje w 4.2), zsh zapisuje plik tymczasowy, a po zakończeniu przenosi go na miejsce. W takim przypadku, jeśli plik historii był dowiązaniem symbolicznym, nowy plik zastępuje dowiązanie symboliczne.Zamiast wskazywać zsh na dowiązanie symboliczne, ustaw
HISTFILE
gdziekolwiek chcesz, aby plik historii był.Ile linii historii jest przechowywanych jest konfigurowane za pomocą zmiennych
HISTSIZE
iSAVEHIST
.HISTSIZE
to maksymalna liczba linii przechowywanych w sesji iSAVEHIST
maksymalna liczba linii przechowywanych w pliku historii.Aby w ogóle zapisać trochę historii, musisz ustawić jedno
HISTFILE
i drugieSAVEHIST
, ponieważ domyślna wartośćSAVEHIST
to 0. Możesz również zwiększyć wartośćHISTSIZE
(od zsh 5.0 domyślna wartość to tylko 30).źródło