我正在尝试设置我的环境,以便所有打开的终端会话都由asciinema自动记录,以便能够轻松地重播我的历史记录中的任何内容。
我使用zshshell并在.zshrc中运行:

if [ "$ASCIINEMA_REC" != "1" ]; then
    local out="rec.json"
    local loc="$HOME/.asciinema"

    if [ -d "${loc}" ]; then
        out="${loc}`pwd`/rec_`date +'%Y-%b-%d_%H-%M-%S'`_pts-`basename $TTY`.json"
        mkdir -p "`dirname ${out}`"
    fi

    asciinema rec -q -w 1 ${out};
fi

但是问题是当我关闭终端窗口时(使用X)。输出未正确关闭,最终为空。此外,由于初始化zsh shell两次,因此现在的初始化时间更长。

最佳答案

我将尝试trapSIGHUPEXIT以便您可以在终端关闭时处理清除命令。

trap 'command' SIGHUP EXIT

所以,在您的例子中,可能要确保您正确地关闭了asciinema运行的伪终端。
也许 吧:
trap 'exit 0;' SIGHUP EXIT # Should exit the current terminal session, hopefully the asciinema one!

参考:Which signals are sent when closing a terminal

10-04 11:17