O script iniciado em tty na inicialização não controla corretamente a backspace

1

Estou usando o Debian Jessie e criei um serviço systemd para iniciar um script em um tty como este:

[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

Meu script test.sh é apenas uma linha de leitura:

#!/bin/bash

read -p "Backspace test: "
exit 0

O que acontece? Eu posso encontrar o script rodando em tty2 - exatamente como esperado; no entanto, se eu inserir algo e usar backspace para remover caracteres, ele começará a exibir as coisas para trás com barras circulares.

Exemplo de introdução de caracteres:

Backspace test: abc

Em retrocesso três vezes, o que deve remover abc , ele se torna:

Backspace test: abc\cba/

Além disso, stty -aerase = ^? e se eu fizer login em um tty e iniciar test.sh , tudo funcionará como esperado.

Por que isso acontece?

Editar: Resolvido ajustando as configurações da linha de terminal usando stty ; mais especificamente, a opção echoprt é interessante:

* [-]echoprt
     echo erased characters backward, between '\' and '/'
    
por hmt50 31.01.2017 / 09:29

0 respostas