저는 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 '/'