起動時に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

バックスペースを3回押すと削除され、abc代わりに次のようになります。

Backspace test: abc\cba/

また、ttyとbootにログインするstty -aと、すべてが期待どおりに機能します。erase = ^?test.sh

なぜこれが起こるのですか?

編集する:stty具体的には、次のオプションを使用してターミナルライン設定を調整することで解決できますechoprt

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

ベストアンサー1

おすすめ記事