시작 시 tty에서 시작된 스크립트가 백스페이스 키를 올바르게 처리하지 않습니다.

시작 시 tty에서 시작된 스크립트가 백스페이스 키를 올바르게 처리하지 않습니다.

저는 Debian Jessie를 사용하고 있으며 다음과 같이 tty에서 스크립트를 시작하는 시스템 서비스를 만들었습니다.

[Unit]
Description=My Test Script

[Service]
Type=simple
ExecStart=/bin/bash /home/tester/test.sh    
StandardInput=tty-force
StandardOutput=tty
StandardError=tty
TTYPath=/dev/tty2
TTYReset=no
TTYVHangup=no
TTYVTDisallocate=no
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

내 스크립트는 test.sh다음 줄을 읽습니다.

#!/bin/bash

read -p "Backspace test: "
exit 0

무슨 일이야? tty2에서 실행 중인 스크립트를 찾을 수 있습니다. 그러나 예상대로 무언가를 입력한 다음 백스페이스를 사용하여 문자를 삭제하면 포함된 슬래시를 사용하여 내용을 거꾸로 출력하기 시작합니다.

입력 문자의 예:

Backspace test: abc

백스페이스를 세 번 누르면 삭제되고 abc대신 다음과 같이 됩니다.

Backspace test: abc\cba/

또한 tty 및 boot 에 로그인 stty -a하면 모든 것이 예상대로 작동합니다.erase = ^?test.sh

왜 이런 일이 발생합니까?

편집하다:stty보다 구체적으로 다음 옵션을 사용하여 터미널 라인 설정을 조정하면 해결됩니다 echoprt.

* [-]echoprt
     echo erased characters backward, between '\' and '/'

관련 정보