Estou investigando o comportamento de um script que normalmente é executado como um processo automatizado (por exemplo, cron, Jenkins). O script pode (eventualmente) chamar comandos que se comportam de maneira diferente (buscando a entrada do usuário) quando executados de maneira interativa; por exemplo, patchperguntará o que fazer com um patch invertido e svnsolicitará senhas, mas preciso ver o que acontece quando elas são executadas de maneira não interativa.
Convencer patchque não é interativo é bastante fácil; Eu só preciso redirecionar stdoutpara ser um não-tty:
$ </dev/null > >(cat) /path/to/myscript --args
No entanto, svnserá conectado ao terminal de controle, se existir; editar os scripts para passar --non-interactivenão é realmente uma opção, pois isso vem de vários níveis e seria difícil ter certeza de que encontrei todas as chamadas.
Existe uma maneira de chamar um script / comando de maneira não interativa, sem um terminal de controle (para que /dev/ttyisso não exista)? Eu preferiria que o stdout / stderr ainda vá para o meu terminal.
(Encontrei a pergunta Executar script em um shell não interativo? Mas as respostas discutem as diferenças entre o cron e o ambiente do usuário; já eliminei todas as diferenças, exceto a não interatividade.)