Talvez com:
if lsof -tac script "$(tty)" > /dev/null; then
echo "I'm running under script"
else
echo "I'm not"
fi
Você pode adicionar algo como:
lsof -tac script "$(tty)" > /dev/null && PS1="[script] $PS1"
Para o seu ~/.zshrc ou ~/.bashrc , as informações sobre se você está em script ou não estarão visíveis no prompt do seu shell.
Alternativamente, se você não pode garantir que lsof esteja instalado, você pode fazer (assumindo um IFS não modificado):
terminal=$(ps -o comm= -p $(ps -o ppid= -p $(ps -o sid= -p "$$")))
[ "$terminal" = script ] && PS1="[script] $PS1"
A heurística é obter o nome do comando do pai do líder da sessão, que geralmente seria o emulador de terminal ( xterm , script , screen ...).