Saya sedang menyelidiki perilaku skrip yang biasanya dijalankan sebagai proses otomatis (misalnya cron, Jenkins). Script dapat (akhirnya) menjalankan perintah yang berperilaku berbeda (mencari input pengguna) ketika dijalankan secara interaktif; misalnya, patchakan bertanya apa yang harus dilakukan dengan tambalan yang dibalik, dan svnakan meminta kata sandi, tetapi saya perlu melihat apa yang terjadi ketika mereka dijalankan secara non-interaktif.
Membujuk patchbahwa itu non-interaktif cukup mudah; Saya hanya perlu mengarahkan ulang stdoutmenjadi non-tty:
$ </dev/null > >(cat) /path/to/myscript --args
Namun svnakan terhubung ke terminal pengendali jika ada; mengedit skrip untuk dilewati --non-interactivebukan pilihan karena ini berasal dari beberapa level dan akan sulit untuk memastikan bahwa saya telah menemukan setiap doa.
Apakah ada cara untuk memanggil skrip / perintah secara non-interaktif, tanpa terminal pengendali (sehingga /dev/ttytidak ada)? Saya lebih suka stdout / stderr untuk tetap pergi ke terminal saya.
(Saya menemukan pertanyaan Jalankan skrip di shell non-interaktif? Tetapi jawaban untuk itu membahas perbedaan antara cron dan lingkungan pengguna; Saya sudah menghilangkan semua perbedaan kecuali non-interaktivitas.)