Мне нравится использовать такие инструменты, как history
, script
, и asciinema
для записи и просмотра сессий xterm (т. е. bash
/ sh
) для типичных общих административных целей, а также иногда для всестороннего изучения/повторения; в качестве инструмента обучения.
Я думал об установке по умолчанию
$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
, stdout
(и stderr
когда это применимо) и т. д.)?
решение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