Во-первых, ваша попытка включить метку времени в имя файла неверна.Это должно быть now=(date +%Y%m%d%H%M%S)
.Кроме того, добавление префикса к команде env
означает, что она не будет видна последующим операторам, поскольку env
заставляет var быть видимым только для любой команды, являющейся частью команды env
.То, что вы написали, эквивалентно
env now=something
path=...
script $path
То, что сначала env
просто добавит now
в env vars, а затем отобразит список env vars.
Во-вторых, вы должны убедиться, чтоэто делается только для интерактивных оболочек:
if status is-interactive
now=(...)
set path /Users/...$now.txt
script $path
end
В-третьих, вам нужно избегать бесконечной рекурсии.Если вы этого не сделаете, то оболочка, запущенная командой script
, запустит другой сеанс script
'ed.Есть много способов сделать это, но самый простой - env var:
if test -z "$SCRIPTED"
set -gx SCRIPTED nested
now=(...)
path=/Users/...$now.txt
script $path
end
В-четвертых, вы можете захотеть сделать exec script $path
, если вы уверены, что это работает надежно.В противном случае, когда вы выйдете из захваченного сеанса, вы вернетесь в не захватывающую оболочку и можете не заметить переход.В качестве альтернативы добавьте что-то вроде echo WARNING: your session is no longer being captured
после команды script
, чтобы сделать это действительно очевидным.