Bashの記録はどこに保存されますか?

Bashの記録はどこに保存されますか?

を実行すると、最後historyに実行されたコマンドを表示できます。

ただし、これを行うと、tail -f $HISTFILEリストtail -f ~/.bash_historyに表示されません。

ファイルがロックされていますか、一時的な場所がありますか?

答え1

Bash は、実行中にメモリ内に命令のリストを保持します。彼らは書かれています.bash_history出るとき:

対話型シェルが終了すると、最後の $HISTSIZE 行が履歴リストから $HISTFILE というファイルにコピーされます。

コマンド履歴を強制的に記録するには、次を使用できます。history -aコマンドは次のことを行います。

新しい履歴行(現在のBashセッションの開始以降に入力された履歴行)を履歴ファイルに追加します。

別のオプションがあります-w

現在の履歴レコードを履歴ファイルに書き込みます。

記録をどのように使用するかに応じて、この方法がより適切かもしれません。

常にすぐに書き込むようにするには、コマンドをPROMPT_COMMAND変数に入れることができます。

export PROMPT_COMMAND='history -a'

答え2

(答えではありませんがコメントを追加できません)

.bash_historyプレーンテキストパスワード(プレーンテキストパスワードなど)を含む特定のコマンドを確認する場合は、メモリからそのエントリを直接削除するだけですhistory -d <entry_id>

たとえば、出力が次のようになるとします。

$ history
926  ll
927  cd ..
928  export --password=super_secret
929  ll

行を整理するには、export次のようにします。

history -d 928

答え3

bashはこれをワークメモリに保存し、bashが閉じられたときまたは各コマンドの後に保存するように設定でき、bashが起動または要求時にロードされるように設定できます。

各コマンドの後に構成を保存する場合は、複数の bash を同時に実行する場合の影響を考慮してください。 (コマンドラインはインターリーブされます)

答え4

セッションがアクティブな間、コマンドはメモリ(RAM)に保存されます。シェルが閉じられる.bash_historyと、閉じる前にコマンドのリストが作成されます。

したがって、現在のセッションの履歴は で見ることができません.bash_history

関連情報