pfn*_*sel 82 command-history zsh
在zsh
,我想拥有无限的历史。我设置HISTSIZE=
,在bash
. 现在我导入一个旧的历史
mv old_history .history
Run Code Online (Sandbox Code Playgroud)
这是相当大
wc -l .history
43562 .history
Run Code Online (Sandbox Code Playgroud)
如果我现在关闭并重新开始zsh
,我会看到
wc -l .history
32234 .history
Run Code Online (Sandbox Code Playgroud)
我不能有无限的历史记录zsh
吗?
aur*_*ien 99
您的机器存在极限和可能性。
HISTFILE="$HOME/.zsh_history"
HISTSIZE=10000000
SAVEHIST=10000000
setopt BANG_HIST # Treat the '!' character specially during expansion.
setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format.
setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits.
setopt SHARE_HISTORY # Share history between all sessions.
setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history.
setopt HIST_IGNORE_DUPS # Don't record an entry that was just recorded again.
setopt HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate.
setopt HIST_FIND_NO_DUPS # Do not display a line previously found.
setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space.
setopt HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file.
setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry.
setopt HIST_VERIFY # Don't execute immediately upon history expansion.
setopt HIST_BEEP # Beep when accessing nonexistent history.
Run Code Online (Sandbox Code Playgroud)
从ZSH 邮件列表:
您应该确定您拥有多少内存,允许历史记录占用多少内存(AFAIK 它始终完全加载到内存中)并采取相应措施。取消限制并不明智,因为它让您认为没有限制,而它始终受可用资源的限制。
或者,如果您认为您永远不会遇到资源耗尽的问题,您可以从limits.h 中将HISTSIZE 设置为LONG_MAX:这是HISTSIZE 可以拥有的最大数量。
其中解释了Gentoo解决方案:
export HISTSIZE=2000
export HISTFILE="$HOME/.history"
Run Code Online (Sandbox Code Playgroud)
如果没有以下命令,历史将不会被保存:
export SAVEHIST=$HISTSIZE
Run Code Online (Sandbox Code Playgroud)
为了防止历史记录重复的条目(例如 ls -l 在单个 shell 会话期间多次输入),您可以设置 hist_ignore_all_dups 选项:
setopt hist_ignore_all_dups
Run Code Online (Sandbox Code Playgroud)
防止特定条目被记录到历史记录中的一个有用技巧,在它们之前至少有一个空格。
setopt hist_ignore_space
Run Code Online (Sandbox Code Playgroud)
Gil*_*il' 34
您需要同时设置HISTSIZE
和SAVEHIST
。它们分别指示要在内存中保留多少行历史记录以及要在历史记录文件中保留多少行。
我不认为 zsh 有一个意味着“无限”的设置,但出于所有实际目的,十亿是无限的,同时在 32 位机器上保持机器可表示性。
HISTFILE=~/.zsh_history
HISTSIZE=999999999
SAVEHIST=$HISTSIZE
Run Code Online (Sandbox Code Playgroud)
我有在经过了封的历史问题10000
,直到我意识到,哦,我的-的zsh被设置自己的HISTSIZE
和SAVEHIST
值。TL;DR,请确保将线条放在.zshrc
.
我遇到的另一个问题是我的历史记录被截断为 1024 行。虽然我不确定为什么,但我通过以下方式解决了它:
HISTFILE=$HOME/.zsh_hist
(与以前不同的东西)HISTFILE=$HOME/.bash_history
明确设置~/.bashrc
HISTSIZE=100000
和SAVEHIST=100000
我认为这可能与我使用export
设置有关,HISTFILE
这导致 bash 在HISTFILE
从 ZSH 交互式启动时使用相同的变量,这会截断它。设置 bash 历史文件可能没有必要,只要您确保不要export
HISTFILE
.
问题不在于zsh
或 my .zshrc
,而在于我的历史。有一些奇怪的条目,比如
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@#1453692179
Run Code Online (Sandbox Code Playgroud)
令人困惑zsh
,这些条目之后的所有内容都被截断了。我不知道^@
对应的字符是什么,也不知道这些条目是如何出现在我的历史记录中的,但是删除它们可以解决问题。
归档时间: |
|
查看次数: |
56574 次 |
最近记录: |