# A command pane's command is over when its process exits, not when its pty # closes. A job it leaves in the background holds the pty open, and the pane # still says `exit 0` as soon as the command itself is done; a command that # lets go of its terminal and runs on is not hung up at its pty's end, and # says how it ended when it does. file cmds.txt sleep 30 & echo BG''STARTED\nexec /dev/null 2>&1; sleep 1; false config Verbose off start 31 120 cmds.txt wait 8000 cmds.txt stable 700 20000 snap opened # line 1: `sleep 30` keeps the pty, and the pane says exit 0 regardless press middle 7 4 drag middle 34 4 release middle 34 4 wait 10000 exit 0 stable 700 15000 snap background # line 2, in a second pane: the first's command is done but its background # `sleep 30` lives on (job control gives it its own group) and still holds # that pane's pty; here the end of file comes at once, and the exit a second # later, from `false` press middle 7 5 drag middle 54 5 release middle 54 5 wait 10000 exit 1 stable 700 15000 snap letgo