Sto studiando il comportamento di uno script che normalmente viene eseguito come processo automatizzato (ad es. Cron, Jenkins). Lo script può (eventualmente) invocare comandi che si comportano in modo diverso (ricercando l'input dell'utente) quando eseguiti in modo interattivo; per esempio, patchchiederà cosa fare con una patch invertita e svnchiederà le password, ma devo vedere cosa succede quando vengono eseguite in modo non interattivo.
Persuadere patchche non è interattivo è abbastanza facile; Devo solo reindirizzare stdoutper essere un non-tty:
$ </dev/null > >(cat) /path/to/myscript --args
Tuttavia svnsi collegherà al terminale di controllo se esiste; la modifica degli script da passare --non-interactivenon è in realtà un'opzione in quanto proviene da diversi livelli di profondità e sarebbe difficile essere certi di aver trovato ogni invocazione.
C'è un modo per invocare uno script / comando in modo non interattivo, senza un terminale di controllo (quindi /dev/ttynon esiste)? Preferirei che stdout / stderr vadano ancora al mio terminale.
(Ho trovato la domanda Esegui script in una shell non interattiva? Ma le risposte a questa discutono delle differenze tra il cron e l'ambiente utente; ho già eliminato tutte le differenze tranne la non interattività.)