これを .bashrc
に追加します (Linux) または .bash_profile
(MacOS):
export HISTFILESIZE=
export HISTSIZE=
ほら、無限の歴史。現在、27000 のエントリがあります :)
man bash
から :
HISTFILESIZE
の場合 が設定されていない場合、切り捨ては実行されません。
つまり .bash_history
切り捨てられません
HISTSIZE
にも同じことが当てはまるようです 、文書化されたものは見つかりませんでしたが.
私が試してみたいもう 1 つの便利な機能は次のとおりです。
<ブロック引用>
HISTTIMEFORMAT
の場合 変数が設定されると、タイム スタンプが履歴ファイルに書き込まれ、履歴コメント文字でマークされるため、次のようにシェル セッション間で保持される可能性があります:
export HISTTIMEFORMAT="%F %T "
すでに試したことがあれば教えてください...
(https://stackoverflow.com/a/19533853/128597 からの回答を再投稿)
何年にもわたって大規模で醜いイテレーションと奇妙なエッジ ケースを何度も繰り返した後、.bashrc にこれ専用の簡潔なセクションを作成しました。
まず、コメント アウトするか、.bashrc のこのセクションを削除する必要があります。 (Ubuntu のデフォルト)。そうでない場合は、特定の環境 (screen
の実行など) セッション) は引き続き履歴を切り捨てます:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
次に、これを追加 .bashrc の一番下に:
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# https://stackoverflow.com/questions/9457233/unlimited-bash-history
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"
注:すべてのコマンドは実行直後に書き込まれるため、誤ってパスワードを貼り付けた場合、履歴の書き込みを回避するために「kill -9 %%」することはできず、手動で削除する必要があります。
また、各 bash セッションは完全な履歴ファイルをメモリにロードすることに注意してください。 時間)、bash の起動時間への影響はほとんどありません。
~/.bashrc に含める :
# append a session's history on shell exit
shopt -s histappend
export HISTFILESIZE=
export HISTSIZE=
この回答は次の基準を満たしています:
<オール>個別のマスター履歴 (どのセッションも履歴を中断できません)
自動履歴書き込み (ホットキーなし)
まれな書き込み (各コマンドの後に追加しない)
背景
インタラクティブな起動時、$HISTFILESIZE
の場合 数値に設定すると、bash は $HISTFILE
を切り捨てます その番号に。シェル オプション histappend
の場合、対話型の終了時 が設定されている場合、bash は $HISTSIZE
を追加します $HISTFILE
までの行 、それ以外の場合は $HISTFILE
を上書きします .
OSX (ターミナル) のヒント
ターミナルでタブが作成されるたびに、~/.bash_profile
これは、bash が ~/.bashrc
を読み取らないことを意味します .次の行を ~/etc/bash_profile
に追加します :
# if bashrc has content, source it
[[ -s ~/.bashrc ]] && . ~/.bashrc
画面のヒント
screen を使用する場合、構成ファイルは ~/.screenrc です。 screen に履歴を記録させたい場合は、ログイン シェルを使用するように設定するだけで済みます。ログイン シェルは、bash の起動ファイルを取得します (そして履歴を記録します)。
# use bash, make it a login shell
defshell -bash