私はlithistオプションを有効にしましたが、これはbash履歴を複数行に保存しましたが、ある日lithistオプションは機能しませんでした。
lithist を有効にすると、1 つの履歴エントリに複数の行を保存できます。括弧内にいくつかのコマンドを入力する場合:
~:$ (
> echo hey
> echo bye
> )
hey
bye
その後、押すと次のようにctrl-p
なります。
~:$ (
echo hey
echo bye
)
悪い日には、lithistが壊れて、人々が複数の行が複数の項目に分割されるのを見ることができます。
# press ctrl-p
~:$ )
# press ctrl-p again
~:$ echo bye
この問題は以前も何度も現れました。これは通常、サイズが~/.bash_history
変数のサイズを超えHISTFILESIZE
、bashがそれを切り捨てて~/.bash_history
履歴ファイルの形式が破損するためです。一度は、履歴ファイルの開始行の一部を削除してからシェルを再起動したところ、履歴が復元されました。
しかし、今回は履歴ファイル全体を削除しても回復できません。
私の設定:
HISTSIZE=1000
HISTFILESIZE=8000
shopt -s cmdhist lithist
lithistが動作している場合、コマンド出力はhistory
次のようになります。
4519* 2019-08-24 15:46:05 (
echo hey
echo bye
)
4520 2019-08-24 16:00:21 history
4521 2019-08-24 16:00:23 history | less
lithistが破損すると、記録の出力も破損します。
1 2019-08-24 14:25:04 \rm .bash_history
2 2019-08-24 14:25:13 (
3 2019-08-24 14:42:26 echo a
4 2019-08-24 14:42:26 echo c
5 2019-08-24 14:42:26 )
しかし、私の履歴ファイルは大丈夫に見えます。
#1566627904
\rm .bash_history
#1566627913
(
echo a
echo c
)
#1566627926
echo bye
この動作は CentOS 6.10 で発生し、変更できませんが、debianstretch を使用する他のコンピュータでは修正できます。