Dopo circa un'ora di ricerca su Google, non riesco a crederci nessuno ha mai fatto questa domanda prima...
Quindi ho uno script in esecuzione su TTY1. Come faccio a fare in modo che lo script avvii un programma arbitrario su TTY2?
- Ho trovato tty, che ti dice su quale TTY ti trovi attualmente.
- Ho trovato writevt, che scrive una singola riga di testo su un TTY diverso.
- Ho trovato chvt, che cambia quale TTY è attualmente visualizzato.
Non voglio visualizzare TTY2. Voglio solo che lo script principale continui a essere eseguito normalmente, ma se passo manualmente a TTY2 posso interagire con il secondo programma.
Risposta accettata:
setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'
 Finché nient'altro utilizza l'altro TTY (/dev/tty2 in questo esempio), dovrebbe funzionare. Questo include un getty processo che potrebbe essere in attesa dell'accesso di qualcuno; avere più di un processo che legge il suo input da un TTY sarà portare a risultati inaspettati.
 setsid si occupa di avviare il comando in una nuova sessione.
 Nota che command dovrà occuparsi di impostare il stty impostazioni corrette, ad es. attiva "modalità cucinata" e onlcr in modo che l'output di una nuova riga aggiunga un ritorno a capo, ecc.