履歴コマンドはどのように機能しますか?


8

ターミナルでコマンドを入力すると~/.bash_history、セッションを終了するまでファイルに表示されません。

また、~/.bash_historyファイルを手動で編集するとき(たとえば、最後の3つのコマンドを削除するとき)にhistory入力すると、~/.bash_historyファイルから削除したコマンドが表示されます。セッションを終了して再度ログインしたときにのみ、それらは消えます。

~/.bash_historyファイルとhistoryコマンドはどのように同期されますか?



「ターミナルでコマンドを入力したとき」実際には当てはまりません。デフォルトでコマンドの前にスペースを入れると、そのコマンドは保存されません。
Rinzwind

@Rinzwindコマンドの前にスペースがある場合でもコマンドを保存する動作は、HISTCONTROL環境変数の値を編集することで変更できます。
sys0dm1n 2017

@ sys0dm1n「デフォルト」
Rinzwind

回答:


10

bashターミナルを開く~/.bash_historyと、アクティブなシェルの履歴が(RAMに)読み込まれて構築され、そのシェルで実行されたすべてのコマンドがそれに追加されます。ファイルには追加されません。

bashターミナルを閉じるときのみ、その履歴が~/.bash_historyファイルに追加されます。


オプションhistory

history -a # save the active shell's history to ~/.bash_history (appending)
history -c # clear the active shell's history
history -d NNN # delete row NNN of the active shell's history
history -r # reload the active shell's history from ~/.bash_history (appending)
history -w # save the active shell's history to ~/.bash_history (overwriting)

~/.bashrcファイルのオプション

~/.bash_historyコマンドの実行直後に一時履歴が保存されるようにこの動作を変更する場合は、次の行を追加します。

PROMPT_COMMAND="history -a"

さらに~/.bash_history、すべてのコマンド実行後にすべての端末でファイルを自動的にロードする場合は、代わりに次の行を追加します。

PROMPT_COMMAND="history -a; history -c; history -r"

特定のコマンド(例:sudoおよびで始まるすべてcat)を保存から除外する場合は、次の行を追加します。

HISTIGNORE="sudo*:cat*"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.