在没有伪终端的情况下使用 SSH 时如何显示 bash 提示符?

在没有伪终端的情况下使用 SSH 时如何显示 bash 提示符?

当连接速度较慢时,我使用 SSH 连接到远程计算机,而不分配伪终端(例如或)。虽然我可以使用 shell,但 shell 不显示提示。有没有办法让 shell在没有伪终端的情况下通过 SSH 连接时显示提示(例如)?ssh -T [email protected]ssh [email protected] bash$

我可以在远程计算机上运行下面的 bash 脚本,但我想知道是否有内置的东西可以用来获取提示。

#!/bin/bash
# or #!/bin/sh

PS='$ '

prompt() {
    printf '%s' "$PS"
    read -r line
    # Exit if EOF (Ctrl-d).
    [ "$?" -ne 0 ] && echo && exit
    eval "$line"
}

# Handle Ctrl-c.
trap 'echo && prompt' INT

while :
do
    prompt
done

(改编基于:https://tldp.org/LDP/abs/html/intandnonint.html

该脚本的缺点是它无法处理多行输入。

答案1

它显然不能解决由于丢失 tty 而导致的所有问题,但你可以这样做:

ssh -T [email protected] bash -i

相关内容