rc.local에서 실행할 때 Whiptail/대화 상자 입력 오류

rc.local에서 실행할 때 Whiptail/대화 상자 입력 오류

데비안이 시작될 때 대화 호출을 포함하는 Bash 스크립트를 시작해야 합니다. 이것이 내가 할 수 있었던 일입니다:

  • 기본 루트 비밀번호 설정 해제
  • 놓다- 자동 로그인tty1의 옵션초기화 프로그램(1:2345:respawn:/sbin/getty --루트 tty1에 자동으로 로그인)
  • 내 스크립트의 전체 경로를 작성하세요./etc/rc.local

그러나 대화 상자에는 비정상적인 동작이 있습니다. 상자가 나타나지만 표준 입력이 표준 출력을 오버플로하는 것 같습니다. 화살표 키를 누르면 버튼이 선택되지 않지만 기본 선택 위치부터 시작하여 해당 ASCII 문자가 대화 상자 상단에 표시됩니다.

대화 상자에 오류 표시

그런 다음 Enter 키를 누르면 키 입력이 대화 상자로 전송되고 예상대로 적절한 옵션이 선택됩니다. 스크립트가 정상적으로 실행될 때 작동하는지 확인하기 위해 테스트되었습니다.

쉘 초기화에 뭔가 빠진 것이 있는 것 같습니다. 를 입력하면 /bin/bash메시지 가 rc.local표시되고 no job control in this shell프로세스에 신호를 보낼 수 없으며 pid도 얻을 수 없습니다(pid 대신 물음표가 나타납니다 top).

왜 이런 문제가 발생합니까? 어떻게 극복하나요?

답변1

rc.local에서 실행되는 모든 대화형 스크립트에는 stdin과 비슷한 문제가 있는 것 같습니다. 해결책을 찾았습니다슈퍼유저:

다음으로 스크립트를 시작하세요.openvt -s -w /path/to/script.sh

(설명은 원본 포스팅 참조)

답변2

콘솔이 stdin프로세스 에 연결되어 있지 않습니다 whiptail.

에서 본 것과 동일한 문제인 것 같습니다.rc.local 읽기가 키 입력을 에코하지 않습니다..

plymouth quit제안된 대답은 콘솔 입력을 시도하기 전에 추가하는 것입니다.

또는 Plymouth가 다음과 같이 경고를 표시하도록 설정할 수도 있습니다.

 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

경고: 저는 Plymouth 전문가가 아니며 위의 방법을 시도하지 않았습니다.

관련 정보