を実行すると、最後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
。