启动时在 tty 上启动的脚本无法正确处理退格键

启动时在 tty 上启动的脚本无法正确处理退格键

我正在使用 Debian Jessie 并创建了一个 systemd 服务,用于在 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/

此外,stty -a如果erase = ^?我登录 tty 并启动test.sh,一切都会按预期工作。

为什么会发生这种情况?

编辑:通过使用调整终端线路设置来解决stty;更具体地说,这个选项echoprt很有趣:

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

相关内容