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, patch
chiederà cosa fare con una patch invertita e svn
chiederà le password, ma devo vedere cosa succede quando vengono eseguite in modo non interattivo.
Persuadere patch
che non è interattivo è abbastanza facile; Devo solo reindirizzare stdout
per essere un non-tty:
$ </dev/null > >(cat) /path/to/myscript --args
Tuttavia svn
si collegherà al terminale di controllo se esiste; la modifica degli script da passare --non-interactive
non è 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/tty
non 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à.)