I can change the name of a window with Ctrl-a Shift-a. Instead of editing several window names by hand, is there a way to have them automatically named after the current directory?

  • Which shell do you use?
    – marco
    Jan 18, 2011 at 20:01
  • I'm using bash.
    – liewl
    Jan 18, 2011 at 20:12

2 Answers 2


Make your shell change the window title every time it changes directory, or every time it displays a prompt.

For your ~/.bashrc:

if [[ "$TERM" == screen* ]]; then
  screen_set_window_title () {
    local HPWD="$PWD"
    case $HPWD in
      $HOME) HPWD="~";;
      $HOME/*) HPWD="~${HPWD#$HOME}";;
    printf '\ek%s\e\\' "$HPWD"
  PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"

Or for your ~/.zshrc (for zsh users):

precmd () {
  local tmp='%~'
  local HPWD=${(%)tmp}
  if [[ $TERM == screen* ]]; then
    printf '\ek%s\e\\' $HPWD

For more information, look up under Dynamic titles in the Screen manual, or under “Titles (naming windows)” in the man page.

  • I copypasted the bash one on my .bashrc and it is giving off these errors: bash: PROMPT_COMMAND: line 0: syntax error near unexpected token ;' bash: PROMPT_COMMAND: line 0: ;screen_set_window_title'
    – liewl
    Jan 19, 2011 at 5:40
  • @David: Sorry, the point was to accumulate commands in PROMPT_COMMAND if there was already something, but I had the components in the wrong order. Jan 19, 2011 at 8:08
  • 2
    Great trick @Gilles. For those who like to keep window titles short, you can drop the full path and only keep the basename. Just replace $HOME/*) HPWD="~${HPWD#$HOME}";; with *) HPWD=`basename "$HPWD"`;;
    – user6176
    Mar 30, 2011 at 21:32

You can put this into the .bashrc to change the terminal name (window name) to the last directory (or file name) that you are in (working on).

case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"' ;; *) ;; esac

more described here: link

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.