Bashの各作業ディレクトリの履歴ログの生成

Bashの各作業ディレクトリの履歴ログの生成

各現在の作業ディレクトリの履歴を含むファイルを保持することが可能かどうか疑問に思います。たとえば、操作中に/user/temp/1/いくつかのコマンドを入力すると、/user/temp/1/.hisそのコマンドはどこに保存されますか?バッシュを使っています。

ベストアンサー1

重要:指摘したとおりザイルズ「じゃあ邪悪なことはやめろ」。次の方法では、シェルが攻撃にさらされ、誤って情報が漏洩する可能性があります。気をつけて進めてください。


提供された回答に基づいて構築グロゲル、〜/.bash_profileから代替CD(ch)を作成できます。

function ch () {
    cd "$@"
    export HISTFILE="$(pwd)/.bash_history"
}

chが呼び出されるたびに、新しいHISTFILE値が自動的に派生します。

Bashのデフォルトの動作はターミナルセッションを終了したときにのみ履歴を更新するため、これだけでセッションを終了したフォルダの.bash_historyファイルに履歴が保存されます。解決策が言及されています。この投稿そして詳しく紹介されたこのページ、HISTFILEをリアルタイムで更新できます。

完全な解決策は、~/.bash_profileにさらに2行を追加することで構成されています。

shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

最初の行を追加するように履歴モードを変更し、すべてのプロンプトで実行するように履歴コマンドを設定します。

おすすめ記事