すべての端末セッションを自動的に記録する方法は?

すべての端末セッションを自動的に記録する方法は?

私はhistory、 、 、scriptなどのツールを使用して、一般的な一般管理目的でxterm(例:/)セッションをasciinema記録してレビューし、時には学習ツールとして全体の研究/レビューに使用するのが好きです。bashsh

  • $SHELLそのツールおよび/またはコマンドへの直接パスとしてデフォルト値を設定することを検討しました。たとえば、次のようになります。

    • /bin/script transcript.log;
    • /bin/asciinema rec -w0.5 term_log.json;
  • ただし、これらのツールはデフォルト$SHELL設定(たとえば/bin/bash、、/bin/shなど/bin/zsh)に依存することがよくあります。

  • また、システム変数(例:など)をオーバーライドしたり、設定()ファイルと$SHELLドッ​​ト(/)ファイルで動作させようと$TERMすると、あらゆる種類の抜け穴と潜在的な問題がいっぱいです。*.conf~/.bashrc~/.bash_profile

  • しかし、私が数分を望んでいることを決定したり気づいたときはいつでも、それは事実の後に起こったか、面白い部分を半分進めたか、または同様のシナリオでした。

すべてを自動的に記録するように(好ましくは(該当する場合)など)、このようなものを設定する正しいベストプラクティスは何stdinですか?stdoutstderr

答え1

.bash_profile似たようなものがあなた.bashrcの次に役立つかもしれません。

if test -t 0 -a -t 1 -a -z "$SCRIPTING"
then
    export SCRIPTING="$HOME/.script.$(date +%Y%m%d_%H%M%S).$$)"
    exec script "$SCRIPTING"
fi

関連情報