web-dev-qa-db-ja.com

Ubuntuの複数のターミナルセッションからBashの履歴を確認するにはどうすればよいですか?

可能性のある複製:
履歴ファイルをbashで統合できますか?

Ubuntu Server 9.10を使用していますが、複数のターミナルセッションのbash履歴を確認したいと思います。つまり私が最後にログアウトした場合でも、最後の200コマンド程度。

historyを使用すると、実際のターミナルセッションからのすべてのコマンドが表示されます。 Bashからより多くのコマンド履歴を表示するにはどうすればよいですか? Ubuntuのデフォルト値から変更する必要があるbashの特定の設定はありますか?

~/.bash_historyファイル。しかし、私は~/.bashrcHISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsおよびHISTCONTROL=ignoreboth

echo $HISTFILE
/home/sanoj/.bash_history
echo $HISTSIZE
500
echo $HISTFILESIZE
500
echo $HISTCONTROL
ignoreboth

UPDATE:現在、VirtualBoxでUbuntu Server 10.10を試しています。 shutdownコマンドを使用せずにVirtualBoxをオフにすると、次回の起動時に、最後のセッションのコマンドが履歴ファイルに保存されません。

コマンドは、shutdownコマンドでマシンをシャットダウンした場合にのみ保存されます。例えば。シャットダウン-P 0。

これが私の問題の原因であるに違いありません。したがって、コマンド履歴をより頻繁に保存する方法を理解する必要があります。例えば。各コマンドの後。

11
Jonas

使用できます

history -a

メモリ内履歴を履歴ファイルにすぐに追加します。これが行われるか、または他のセッションが終了しない限り、1つの端末セッションは別のセッションを見ることができません。

使用できます

history 200 | less

そのエントリ数を確認します。

HISTSIZEに加えて、HISTFILESIZEに関するBash manページのエントリを参照してください。

ログアウトすると、履歴がファイル~/.bash_historyに追加されます。そちらをご覧ください。

デフォルトでは、最後の500コマンドを記憶します。さらに保存する場合は、~/.bashrcに変数HISTSIZEを設定します。

また、ignoredupsHISTCONTROLに追加します(HISTCONTROL=$HISTCONTROL:ignoredupを使用)。これにより、重複する連続したコマンドが1回だけ保存されます。

man 1 bashで、履歴について他に調整できることを確認してください。

6

bashの履歴は通常、シェルの実行開始時にロードされ、通常の終了時に保存されます。 history -ahistory -nを使用してこれをオーバーライドできますが、$Prompt_COMMANDまたは同様のものを乱用しない限り、自動的にはオーバーライドできません。

Sanoj、これは本当に「うまくいく」はずです。これを可能にするためにあなたがする必要がある特別な何かがあるはずではないと思います。何かが通常のイベントの進行を妨げているようです。

/ etc/profile、/ etc/bashrc(またはいくつかのソースによるとおそらく/etc/bash.bashrc)、~/.bash_profile、~/.bashrc、~/.bash_login、~/.bash_logoutを見て、履歴に影響している可能性があるものがある場合(おそらく上記の各ファイルでgrep -i hist)。

...特に、ファイルを削除する何かが〜/ .bash_logoutにあるかどうか疑問に思います。

または、何かが$HOME変数をオーバーライドしている可能性はありますか?

0
Zac Thompson