Bash 명령 '읽기' 오류 "식별자가 아닙니다: -t"

Bash 명령 '읽기' 오류 "식별자가 아닙니다: -t"

나는 /etc/profile 끝에 다음과 같은 매우 간단한 스크립트를 작성했습니다.

    i=3
    let key
    while [ $i -gt 0 ] ; do
        printf "\rPress 'q' to prevent starting X ($i)"
        read -rsn 1 -t 1 key # THE PROBLEM IS HERE
        if [[ $? == 0 ]] ; then
            break;
        fi
        i=$[$i-1]
    done

    if [[ $key != "q" ]]; then
        printf "\nStarting X..."
        exec startx
    fi

이 스크립트를 사용하면 로그인 시 X를 시작할지 여부를 선택할 수 있습니다. 스크립트를 직접 실행하면 스크립트가 예상대로 작동합니다("exec startx" 없이). 하지만 그 동안윤곽스크립트 실행이 다음에서 중지되었습니다.읽다이 명령은 시간 초과 없이 사용자 입력을 기다리고 아무 키나 누르면 "식별자가 아님: -t"라는 오류가 표시됩니다.

답변1

여기에는 두 가지 다른 문제가 있을 수 있습니다.

  1. 귀하의 프로필은 Shebang을 사용하여 프로필의 어떤 것도 실행할 수 없습니다. 구성 파일은 로그인 셸에서 사용되는 다양한 변수를 내보내므로 얻어야 ​​합니다. shebang이 구성 파일에서 다른 셸을 시작하면 스크립트가 완료되면 해당 효과가 사라집니다. 어떤 하위 프로세스도 상위 프로세스의 환경에 영향을 미칠 수 없습니다.
  2. 프로필을 실행할 때 응답을 수신할 수 있는 터미널이 열려 있지 않을 수 있습니다.

관련 정보