1

I have an odd predicament. I want to detect on the remote end of an ssh connection if the client is running the terminal inside a screen session. I want to set my prompt based on this. So far I have tried using remotehost:~/.ssh/env[1] and the SendEnv option in my localhost:~/.ssh/config to send my $STY variable[2]; but both have failed.

So I was wondering if there is any other way to achieve this?

Footnotes:

[1] This doesn't work since it doesn't evaluate anything, I can't set things up dynamically.

[2] This requires AcceptEnv be allowed on the remote end. This is not possible because I'm not the admin on the remotehost and even if I were, the man sshd_config advises against it.

suvayu
  • 219

1 Answers1

0

Try this:

if [ "${TERM}" == "screen" ]
then
    # Set prompt to something special for screen.
fi

Here is the relevant quote from the screen manpage:

   term term

   In  each  window's  environment  screen opens, the $TERM variable is set to "screen" by default.  But when no description for "screen" is installed in the
   local termcap or terminfo data base, you set $TERM to - say - "vt100". This won't do much harm, as screen is VT100/ANSI compatible.  The use of the "term"
   command is discouraged for non-default purpose.  That is, one may want to specify special $TERM settings (e.g. vt100) for the next "screen rlogin otherma-
   chine" command. Use the command "screen -T vt100 rlogin othermachine" rather than setting and resetting the default.