1

When the connection is slow, I connect to remote computers using SSH without allocating a pseudo-terminal (e.g. ssh -T [email protected] or ssh [email protected] bash). Although I am able to use the shell, the shell does not display a prompt. Is there a way to make the shell display a prompt (e.g. $ ) when connecting via SSH without a pseudo-terminal?

I could run the bash script below on the remote computer, but I'm wondering if there is something built-in that I can use to get a prompt.

#!/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

(Adapted based on: https://tldp.org/LDP/abs/html/intandnonint.html)

This script has the disadvantage that it is not able to handle multi-line inputs.

4
  • @terdon if you're using ssh over a line with 500ms latency, it would take >1second every time you press a key until it appears on the screen. That's not an XY problem --- it actually makes the ssh unusable.
    – user313992
    Nov 10, 2021 at 14:28
  • @UncleBilly oh yes, I am painfully aware of that problem. I just don't know if disabling the pseudo-tty allocation is actually that helpful. The XY would be if the -T option isn't actually helping much. Does it? Do you know? Happily I no longer need to deal with such slow connections these days so I can't test.
    – terdon
    Nov 10, 2021 at 14:42
  • 1
    @terdon when the pty allocation is disabled, ssh does not set the local tty to raw mode, and typing in a 80-characters command line turns into a single packet + response instead of 80.
    – user313992
    Nov 10, 2021 at 14:46
  • Ah, I see. Thanks, @UncleBilly.
    – terdon
    Nov 10, 2021 at 14:54

1 Answer 1

1

It obviously does not solve all problems which result from the missing tty but you can do this:

ssh -T [email protected] bash -i
1
  • This also works for /bin/sh.
    – Flux
    Nov 12, 2021 at 14:53

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .