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
...).