启动 /usr/bin/script 中的所有终端会话

启动 /usr/bin/script 中的所有终端会话

我想花费一些磁盘空间记录终端会话的所有输入和输出;/usr/bin/script似乎在这方面相当擅长。我想让所有新的 shell 会话(当前我使用的/bin/bash)都可以在一个script会话中启动,该会话通过名称记录到一个文件~/.log/$(date --iso-8601=second).log

我尝试过script在 .bashrc 文件末尾调用,但回想起来它基本上崩溃了并且无法打开新的 shell。

关于保存此类记录的可能方法有什么想法吗?我已经有一个《永恒的狂欢历史》但仅仅知道输入对我来说并不总是足够的。

答案1

我不认为把它放在你的 rcfile 的底部会有多大作用 - 当script加载一个新的 shell 时,你事先声明的所有状态都会被清除,直到尝试永远加载rcfile等。我刚刚让它在我的终端上运行,如下所示:

$ x=;bash --rcfile /dev/fd/3 3<<\$x
    export S_LOG=~/".log/$(date --iso-8601=second).log"
    exec   script -aeqfc "bash   --rcfile /dev/fd/3 -i" "$S_LOG" \
3<<""
    alias success='echo it worked'
    PS1='script $ '
    exec 3<&-

$x
script $ success
it worked
script $ cat "$S_LOG"
Script started on Mon Dec 14 15:43:28 2015
script $ success
it worked
script $ cat "$S_LOG"
script $

所以我认为你最好把它放在你的 rc 文件,然后exec一个新的 shell 来读取它的其余部分您称之为新外壳的点。

相关内容