Estoy investigando el comportamiento de un script que normalmente se ejecuta como un proceso automatizado (por ejemplo, cron, Jenkins). El script puede (eventualmente) invocar comandos que se comportan de manera diferente (buscando la entrada del usuario) cuando se ejecuta de forma interactiva; por ejemplo, patchpreguntará qué hacer con un parche invertido y svnsolicitará contraseñas, pero necesito ver qué sucede cuando se ejecutan de manera no interactiva.
Persuadir patchque no es interactivo es bastante fácil; Solo necesito redirigir stdoutpara ser un no-tty:
$ </dev/null > >(cat) /path/to/myscript --args
Sin embargo, svnse conectará al terminal de control si existe; editar los scripts para pasar --non-interactiveno es realmente una opción, ya que proviene de varios niveles y sería difícil estar seguro de que encontré cada invocación.
¿Hay alguna manera de invocar un script / comando de forma no interactiva, sin un terminal de control (para que eso /dev/ttyno exista)? Prefiero que stdout / stderr aún vaya a mi terminal.
(Encontré la pregunta ¿ Ejecutar script en un shell no interactivo? Pero las respuestas a eso discuten las diferencias entre el entorno cron y el entorno del usuario; ya he eliminado todas las diferencias excepto la no interactividad).