10

I like to pop up a screen session with pre-opened SSH connections to the primary servers that I administrate at the office. I give these windows each a very brief name, typically 2-4 characters, so they appear in my screen status bar with those names. So I'll have a screen entry that looks like

0$ jen1 ...

Now, when I need to switch to that server and do anything even as simple as fetch a directory listing, that name suddenly expands and becomes

0$ ghellings@devjenkins01

The same happens for each and every window as I access it, making my status bar quickly overflow the horizontal width of my screen. I would like to lock the name in place at window creation time and prevent client applications from changing it. I don't want any applications to be able to change the screen window title (quite the opposite of what lots of people seem to be asking). This becomes especially cumbersome once I change to that screen and open a directory somewhere. Then the screen title becomes

 (0*$ ghellings@devjenkins01:/opt/somepackage/software/subdirectory)

I want it to only change the active status so it will always read either

`0$ jen1` or `(0*$ jen1)`

Is there a way for me to lock the window name in and prevent changing it?

8

I found this early on in RHEL 7 testing and it would drive me nuts. What I discovered is that there was a change to /etc/bashrc in RHEL 7 that causes the naming of windows in screen and tmux to change whenever a command like cd or ls is run. In section screen*)

if [ -e /etc/sysconfig/bash-prompt-screen ]; then
    PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
## RHEL 7
    PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'

## RHEL 6
    PROMPT_COMMAND='printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi

So in RHEL 7 the change was from ]0; to k in the PROMPT_COMMAND section.

I had considered opening a bug, but just never got around to it. I usually just change it manually on a fresh install.

  • Changes made to update formatting
4

Most probably, you have the PROMPT_COMMAND variable set to something like

printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

I have exactly this on a CentOS 7 system. This sets the xterm window title after each command, which screen uses as window title.

Just unset PROMPT_COMMAND in your .bashrc or edit /etc/bashrc to not set it.

  • See below to make this more permanent. – math Nov 16 '18 at 18:53
1

If you check .bashrc or /etc/bashrc, you may see if or case which is related to screen.

In my case, it was something like:

if [ -e /etc/sysconfig/bash-prompt-screen ]; then
    PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
    PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi

under case $TERM in in /etc/bashrc file.

The problem was that I did not have the file /etc/sysconfig/bash-prompt-screen so PROMPT_COMMAND under else is used.

I just made an empty /etc/sysconfig/bash-prompt-screen file then titles of screen windows are not dynamically changed anymore!

  • Have to make the empty file executable or you'll get a warning every time bash is launched (eg at login for everyone). – math Nov 16 '18 at 18:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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