When I run fc -l (history) from a zsh script that isn't interactive I get the message not interactive shell Why is it that fc -l needs an interactive shell? One can put entries in the history and one can use vared to cycle through them, so what is it about an interactive shell that is important here? Related to this, why can't an interactive shell be toggled? Suppose I run a non-interactive program and later want to attach to it say for debugging. At that point, I attach interactive tty and it becomes interactive. So what are the issues involved in turning a non-interactive program (from zsh's definition) to an interactive one? Thanks.