小智 88
将此添加到您的.bashrc
(Linux) 或.bash_profile
(MacOS):
export HISTFILESIZE=
export HISTSIZE=
Run Code Online (Sandbox Code Playgroud)
你去吧,无限的历史。目前我有 27000 个条目 :)
来自man bash
:
如果
HISTFILESIZE
未设置,则不执行截断。
这意味着.bash_history
永远不会被截断
同样的情况似乎也适用于HISTSIZE
,尽管我找不到记录。
我要尝试的另一个简洁功能是:
如果
HISTTIMEFORMAT
设置了该变量,时间戳将写入历史文件,用历史注释字符标记,因此它们可以在 shell 会话中保留,如下所示:
export HISTTIMEFORMAT="%F %T "
Run Code Online (Sandbox Code Playgroud)
如果您已经尝试过,请告诉我...
fot*_*kis 49
多年来,经过许多大型、丑陋的迭代和奇怪的边缘情况,我现在有一个专门用于此的.bashrc的简洁部分。
首先,您必须注释掉或删除 .bashrc 的这一部分(Ubuntu 的默认设置)。如果不这样做,那么某些环境(如运行screen
会话)仍会截断您的历史记录:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
Run Code Online (Sandbox Code Playgroud)
其次,将其添加到 .bashrc 的底部:
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# /sf/ask/662006341/
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
Run Code Online (Sandbox Code Playgroud)
注意:每个命令都会在运行后立即写入,因此如果您不小心粘贴了密码,您不能仅仅通过“kill -9 %%”来避免历史写入,您需要手动删除它。
另请注意,每个 bash 会话都将在内存中加载完整的历史文件,但即使您的历史文件增长到 10MB(这将花费很长时间),您也不会注意到对 bash 启动时间有太大影响。
cdo*_*orn 10
包含在~/.bashrc 中:
# append a session's history on shell exit
shopt -s histappend
export HISTFILESIZE=
export HISTSIZE=
Run Code Online (Sandbox Code Playgroud)
此答案满足以下条件:
单独的主历史记录(没有会话可以中断您的历史记录)
自动历史写入(无热键)
不频繁的写入(在每个命令之后没有附加)
在交互式启动时,如果$HISTFILESIZE
设置为数字,bash 将截断$HISTFILE
为该数字。在交互式关闭时,如果histappend
设置了 shell 选项,bash 会将$HISTSIZE
行附加到$HISTFILE
,否则会覆盖$HISTFILE
.
每次在终端中创建选项卡时,~/.bash_profile
都会读取,这意味着 bash 不会继续读取您的~/.bashrc
. 将以下行添加到您的~/etc/bash_profile
:
# if bashrc has content, source it
[[ -s ~/.bashrc ]] && . ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
如果你使用 screen,你的配置文件是 ~/.screenrc。如果您希望 screen 记录历史记录,您只需将其设置为使用登录 shell,它将获取您的 bash 启动文件(并记录您的历史记录)。
# use bash, make it a login shell
defshell -bash
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
50950 次 |
最近记录: |