Bashの履歴リストは、新しいログイン時に常に5000行に切り捨てられます。

Bashの履歴リストは、新しいログイン時に常に5000行に切り捨てられます。

似ている5000行の制限の問題最初のことがあるとき.bashrc私は持っ export HISTSIZE=10001 ています export HISTFILESIZE=$HISTSIZE

私のユーザーにはファイルがなく、~/.inputrcシステム全体の/etc/inputrcファイル(Ubuntu 11.10のデフォルトと変更されていません)には定義がありませんhistory-size。マニュアルページには、readlineヒントを提供する以外にデフォルト値は表示されません。(0)または無制限。

history -wただし、最後のセッションでより多くの独自のコマンドラインを追加したり、ログアウトせずに保存したにもかかわらず、ログインするたびにプロンプ​​トに5000個しか表示されません。

この制限はどこに設定されており、これを克服するには?

私のヒントやその他の興味深い設定は、以下で提供されます。~/.bashrcまたはファイルソース:

PS1='\u@\h\w \d,\t\$ (\!) '
HISTCONTROL=erasedups:ignorespace
HISTSIZE=10001
export HISTIGNORE="[   ]*:&:bg:fg:exit"
export HISTFILESIZE=$HISTSIZE
export PROMPT_COMMAND="history -a"  
shopt -s histappend
HISTTIMEFORMAT="%Y-%m-%d_%H-%M-%S " 
shopt -s histreedit

ヒントの例:

master@quant~/dev Mon Feb 27,10:08:29$ (5721)

いくつかのコメントに答えるには:

# to unpollute from other concurrent sessions, which previously already truncated file to 5000 at login:
master@ventana~ Mon Feb 27,18:47:35$ (9220) history -w  

master@ventana~ Mon Feb 27,18:51:34$ (9220) history |wc
   9219   69109  795143
master@ventana~ Mon Feb 27,18:51:51$ (9220) wc -l ~/.bash_history
18442 /home/master/.bash_history

# ignoring timestamps, nominally every other line like #1328201645
master@ventana~ Mon Feb 27,18:51:58$ (9220) grep -vc "^#[0-9]\{10\}$" .bash_history
9222

答え1

私はこれについての動作理論を持つことができます。

私は昔

HISTSIZE=10001

しかし、 ~/.bash_history の実際の行は次のようになります。

#1341908063
w;df
#1341908291
wizmo reboot!
#1341909327
sc stop uxsms; sleep 1; sc start UxSms

つまり、私のHISTTIMEFORMAT="%Y-%m-%d_%H-%M-%S "シェルの設定により、他のすべての行はタイムスタンプです。

したがって、5000のコマ​​ンドを記録するには、ファイルに10000行が必要です。

これで制限を HISTSIZE=20001 に設定しました。

最後に、私のプロンプトに5000以上の歴史的なコマンドが残っていることを確認しました。後ろに新しいログイン。

関連情報