Badam zachowanie skryptu, który normalnie jest uruchamiany jako proces automatyczny (np. Cron, Jenkins). Skrypt może (ewentualnie) wywoływać polecenia, które zachowują się inaczej (szukając danych wejściowych od użytkownika), gdy są uruchamiane interaktywnie; na przykład patch
zapyta, co zrobić z odwróconą łatką, i svn
poprosi o hasła, ale muszę zobaczyć, co się stanie, gdy zostaną uruchomione bez interakcji.
Przekonanie patch
, że nie jest interaktywne, jest dość łatwe; Muszę tylko przekierować, stdout
aby nie być tty:
$ </dev/null > >(cat) /path/to/myscript --args
Jednak svn
połączy się z terminalem sterującym, jeśli istnieje; edycja skryptów do przejścia --non-interactive
nie jest tak naprawdę opcją, ponieważ pochodzi ona z kilku poziomów i trudno byłoby mieć pewność, że znalazłem każde wywołanie.
Czy istnieje sposób na wywołanie skryptu / polecenia w sposób nieinteraktywny, bez kontrolującego terminala (więc /dev/tty
to nie istnieje)? Wolałbym, aby stdout / stderr nadal jechał do mojego terminalu.
(Znalazłem pytanie Uruchom skrypt w nieinteraktywnej powłoce? Ale odpowiedzi na to omawiają różnice między środowiskiem cron a środowiskiem użytkownika; już wyeliminowałem wszystkie różnice oprócz nieinteraktywności).