私は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 '/'