Terminal
從 rc.local 執行時鞭尾/對話框輸入錯誤
我需要在 Debian 啟動時啟動一個包含對話框呼叫的 Bash 腳本。這就是我能夠做到的方式:
- 取消設置預設root密碼
- 在initrd ( 1:2345:respawn:/sbin/getty –autologin root tty1 )中將 –autologin選項設置為 tty1
- 在/etc/rc.local中寫入我的腳本的完整路徑
但是,對話框有一個不尋常的行為:出現該框,但隨後標準輸入似乎溢出標準輸出。當我按下箭頭鍵時,沒有選擇任何按鈕,而是在對話框頂部顯示相應的 ASCII 字元,從預設選擇位置開始:
請注意,如果我然後按 Enter,則鍵將發送到對話框並按預期選擇相應的選項。該腳本在正常執行時一直在測試工作。
我想shell初始化中缺少一些東西:如果我
/bin/bash
輸入rc.local
,我會收到no job control in this shell
消息,並且不能向程序發送信號也不能獲得pid(我得到問號而不是pidtop
)。為什麼會出現這種行為,我該如何克服?
似乎從 rc.local 啟動的任何互動式腳本都將與標準輸入有類似的問題。我在超級使用者上找到了一種解決方法:
只需使用啟動您的腳本
openvt -s -w /path/to/script.sh
(原帖中的解釋)
控制台未連接到
stdin
程序whiptail
。看起來與在rc.local 中看到的相同問題 read will not echo keystrokes。
建議的答案是
plymouth quit
在嘗試控制台輸入之前添加。或者,也可以安排普利茅斯本身顯示您的警告;就像是
plymouth pause-progress plymouth message --text="Your system will be hosed. Is that what you want? What you really, really want? [yn]" plymouth watch-keystroke --keys="YyNn " --command="tee /tmp/key_pressed" case $(cat /tmp/key_pressed) in [nN]) poweroff; # abort! ;; esac plymouth message --text="Okay, you asked for this" plymouth unpause-progress
警告:我不是普利茅斯專家,也沒有嘗試過上述方法。