Ich untersuche das Verhalten eines Skripts, das normalerweise als automatisierter Prozess ausgeführt wird (z. B. cron, Jenkins). Das Skript kann (eventuell) Befehle aufrufen, die sich bei interaktiver Ausführung anders verhalten (nach Benutzereingaben suchen). Ich patchwerde zum Beispiel fragen, was mit einem umgekehrten Patch zu tun ist, und svnnach Passwörtern fragen, aber ich muss sehen, was passiert, wenn sie nicht interaktiv ausgeführt werden.
Es patchist ziemlich einfach, davon zu überzeugen, dass es nicht interaktiv ist. Ich muss nur umleiten stdout, um ein Nicht-Tty zu sein:
$ </dev/null > >(cat) /path/to/myscript --args
Stellt svnjedoch eine Verbindung zum steuernden Terminal her, falls vorhanden. Das Bearbeiten der zu übergebenden Skripte --non-interactiveist keine Option, da dies aus mehreren Ebenen stammt und es schwierig sein könnte, sicher zu sein, dass ich jeden Aufruf gefunden habe.
Gibt es eine Möglichkeit, ein Skript / einen Befehl nicht interaktiv ohne ein steuerndes Terminal aufzurufen (das /dev/ttygibt es also nicht)? Ich würde es vorziehen, wenn stdout / stderr immer noch zu meinem Terminal geht.
(Ich habe die Frage Skript ausführen in einer nicht interaktiven Shell gefunden? In den Antworten darauf werden jedoch die Unterschiede zwischen der Cron- und der Benutzerumgebung erörtert. Ich habe bereits alle Unterschiede außer der Nicht-Interaktivität beseitigt.)