Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'd like to set the terminal title to user@host so I can easily tell which machine I'm connected to from the window title. Is there a way to do this from SSH or from GNOME Terminal?

share|improve this question
up vote 17 down vote accepted

Yes. Here's an example for bash using PS1 that should be distro-agnostic:

Specifically, the escape sequence \[\e]0; __SOME_STUFF_HERE__ \a\] is of interest. I've edited this to be set in a separate variable for more clarity.

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)

# Same thing.. but with octal ASCII escape chars

if [ "$color_prompt" = yes ]; then
    PS1="${TITLEBAR}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ "
    PS1="${TITLEBAR}\u@\h:\W\$ "
unset color_prompt force_color_prompt

Also note that there can be many ways of setting an xterm's title, depending on which terminal program you are using, and which shell. For example, if you're using KDE's Konsole, you can override the title setting by going to Settings->Configure Profiles->Edit Profile->Tabs and setting the Tab title format and Remote tab title format settings.

Konsole titlebar settings dialog

Additionally, you may want to check out:

share|improve this answer
So do I need to set this on all of the servers I am connecting to or on my own local machine? – Naftuli Tzvi Kay May 31 '11 at 21:11
@TKKocheran: You need to do this on every machine where you're running a shell. If you only want to do it for remote logins, put \h in that prompt only if $SSH_CLIENT is non-empty. – Gilles May 31 '11 at 21:19
@TK : Yes, you will need to set this on all the servers you connect to. The PS1 variable is local to your current shell (even on a remote host), not the terminal program (ie: gnome-terminal). – TrinitronX May 31 '11 at 21:20
I assume that this will apply differently on servers not running Debian. Can you edit your answer to provide for servers running, let's say, Fedora/Red Hat derivatives? – Naftuli Tzvi Kay May 31 '11 at 21:29
@TK : I tested this using SSH to various hosts from an Ubuntu 11.04 machine... So the title bar was set correctly there... If it doesn't work, try adding this sequence to the front: \[\e]2;\u@\h\a. (Also edited my response with that info) – TrinitronX May 31 '11 at 22:14

Here's a version of the SSH bash script that I use which sets the remote server's title and command prompt without making any changes to the remote server.


ssh -t $1@$2 "export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"

You can invoke it by calling ./my_ssh.sh username hostname

share|improve this answer
I doubt this works when starting another bash session after ssh login though (e.g. when using screen) – Laurens Rietveld Sep 16 '14 at 10:23

The following works for me (probably only on gnome-terminal):

comp@home$ cat /usr/bin/ssh
echo -ne "\033]0;${1}\007"
ssh_bkup "$@"

Where ssh_bkup command is just basic 'ssh' with a changed name, which is called right after the echo command changes the current terminal's title.

share|improve this answer
wouldn't an alias solutions be better than renaming commands to something non-standard ? – X Tian Jun 18 '15 at 14:24
This works fine for me, also gnome-terminal. ~/bin has priority in my path, so I placed your script in my ~/bin/ssh. The last row explicitly calls to /usr/bin/ssh. This way, other users still use the standard ssh when logged in on that machine, and (since our home directories are on server, LDAP accounts) I get the functionality on whichever machine I am logged in on. – Gauthier Mar 14 at 9:17

this is alias version

SETPC="export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"

alias myssh='function _myssh(){ ssh -t $1@$2 $SETPC; };_myssh'
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.