
私のサーバーにルートSSHを使用します。場合によっては、履歴を後ろにスクロールすると、前のセッションの履歴が表示されますが、最後のセッションの履歴は表示されません。同じユーザーアカウントでこれが起こるのはなぜですか?私が使用しているttyに関連していますか?強打4
答え1
シェルが閉じられるたびに、その特定のシェルの履歴は以前のシェルで作成された履歴ファイルを上書きします。
シェル履歴の内容はこのファイルに保存されます$HOME/.bash_history
。プレーンテキストファイルなので見ることができます。動作を改善するために設定できるさまざまな履歴オプションがあります。見てバッシュのマニュアルページ。ほとんどはまたhist*
はと命名されますHIST*
。ただ見つけてください。
具体的には、shopt -s histappend
bashが履歴ファイルを上書きするのではなく、現在のセッション履歴を履歴ファイルに追加するようにします。
答え2
これはさまざまな理由で発生する可能性があります。
history -a
まず、最後のセッションがまだアクティブな場合は、history -w
シェルで(新しい履歴の追加)または(書き込みの上書き)コマンドを実行しない限り、その履歴は履歴ファイルに保存されません。
また、シェルが異常終了した場合(たとえば、次のため)、最後の手段kill -9
としてのみ使用する必要があり、記録は保存されません。
私が見たもう一つの問題は、script
コマンドの使用に関するものです。たとえこれが単に作業順序と私自身の予測/希望的な考えにすぎないと思います。新しいシェルセッションはscript
ファイルを再読み込みするため、最新の記録なしで実行されます。さらに、既存以降はscript
親シェルが作成された履歴に更新されません。このhistory
コマンドを使用すると、この問題を簡単に解決できます。