Asal usul pertanyaan ini, bagi saya, adalah dapat menjalankan perintah whiptail dalam %pre
skrip dari file kickstart ketika menginstal distribusi khusus berdasarkan Centos. Namun, perilaku yang diamati di Anaconda dapat dengan mudah direproduksi melalui terminal virtual dari sistem Linux apa pun.
Untuk menjalankan perintah whiptail di Anaconda sebagai %pre
skrip kickstart , perlu untuk mengganti TTY dan menjalankan perintah di TTY baru ini. Saran yang berlaku tentang bagaimana melakukan ini adalah:
%pre
exec </dev/tty6 >/dev/tty6 2>/dev/tty6
chvt 6
# then execute your command, for example:
whiptail --inputbox "Enter some text..." 10 30
# switch back to the original TTY
chvt1
exec </dev/tty1 >/dev/tty1 2>/dev/tty1
%end
Dengan menggunakan metode ini, kotak dialog whiptail dirender dengan benar di TTY baru, namun tidak ada interaksi yang terjadi dengan dialog - misalnya menekan tab
, alih-alih beralih di antara entri teks, elemen "Oke", dan "Batalkan", sebenarnya memasukkan tab di kotak entri teks. Demikian pula, menggunakan tombol panah menghasilkan urutan keluar yang ditulis dalam dialog:
Perilaku ini juga diamati ketika menggunakan camilan python (menggunakan perpustakaan yang sama dengan whiptail - libnewt) dan dialog.
Tentu saja, saya hanya bisa menggunakan skrip shell interaktif, daripada menggunakan whiptail, tapi saya hanya ingin tahu apakah ada yang punya saran mengapa perilaku ini terlihat, karena saya akan berpikir bahwa satu-satunya persyaratan untuk mendapatkan pekerjaan ini adalah untuk mengarahkan aliran input dan output dengan benar.
TL; DR
Saya tertarik untuk membuat skrip yang berisi perintah whiptail / dialog yang dapat dieksekusi dalam satu TTY dan meminta output / input skrip ke / berasal dari TTY yang berbeda.
exec </dev/tty6 >/dev/tty6 2>/dev/tty6
danchvt 6
masing - masing.