Is there a way I can get the DEBUG trap to execute only once per command (simple or otherwise) entered at the prompt? If not, what is the best way for my trap code to detect whether it has already executed since the last time the prompt was drawn?

@StephaneChazelas: Thanks for the link. It looks like preexec.bash basically does what I do in my answer (via the preexec_interactive_mode variable), so maybe the approach in my answer is as non-kludgy as it can get. I do wish bash had something like zsh's preexec() hook.
–
Richard HansenApr 17 '14 at 20:36