osx lion - How do I stop automatic changing of iterm tab titles?

05
2013-12
  • executor21

    After switching to using .bashrc instead of .bash_profile (I didn't like how the default terminal worked with one config file and utilities like screen with another), the behavior of iterm2 changed. Before, when I set the tab titles manually, they would remain there unless I ssh'd into another server, at which point the title would change to username@otherservername: /location/in/other/servers/filesystem. Now, when I change the tab titles, they remain so until the first command I execute in that tab. As soon as I run something, the tab title switches to myusername@mymacname: /my/location/in/my/mac/filesystem.

    Using the command line argument, echo -ne "\e]1;tab title\a" doesn't help. It does switch (Slow enough to notice the title change on the screen), but when the command exits, the title is back where it used to be: myusername@mymacname: /my/location/in/my/mac/filesystem.

    Ideally, I would like the tab titles to NEVER switch automatically, including when I ssh into another server. If that's not possible, I'd like to return to the previous behavior: as long as I'm on the local machine, keep the tab titles I set. Can that be done?

    Here's my .bashrc file:

    # ~/.bashrc: executed by bash(1) for non-login shells.
    # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
    # for examples
    
    # If not running interactively, don't do anything
    [ -z "$PS1" ] && return
    
    # don't put duplicate lines in the history. See bash(1) for more options
    # don't overwrite GNU Midnight Commander's setting of `ignorespace'.
    export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
    # ... or force ignoredups and ignorespace
    export HISTCONTROL=ignoreboth
    
    # append to the history file, don't overwrite it
    shopt -s histappend
    
    # for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
    
    # check the window size after each command and, if necessary,
    # update the values of LINES and COLUMNS.
    shopt -s checkwinsize
    
    # make less more friendly for non-text input files, see lesspipe(1)
    [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
    
    # set variable identifying the chroot you work in (used in the prompt below)
    if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
        debian_chroot=$(cat /etc/debian_chroot)
    fi
    
    # set a fancy prompt (non-color, unless we know we "want" color)
    case "$TERM" in
        xterm-color) color_prompt=yes;;
    esac
    
    # 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
    force_color_prompt=yes
    
    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.)
        color_prompt=yes
        else
        color_prompt=
        fi
    fi
    
    if [ "$color_prompt" = yes ]; then
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;36m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
    else
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    fi
    unset color_prompt force_color_prompt
    
    # If this is an xterm set the title to user@host:dir
    case "$TERM" in
    xterm*|rxvt*)
        PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
        ;;
    *)
        ;;
    esac
    
    # Alias definitions.
    # You may want to put all your additions into a separate file like
    # ~/.bash_aliases, instead of adding them here directly.
    # See /usr/share/doc/bash-doc/examples in the bash-doc package.
    
    #if [ -f ~/.bash_aliases ]; then
    #    . ~/.bash_aliases
    #fi
    
    # enable color support of ls and also add handy aliases
    if [ -x /usr/bin/dircolors ]; then
        eval "`dircolors -b`"
        alias ls='ls --color=auto -hF'
        #alias dir='dir --color=auto'
        #alias vdir='vdir --color=auto'
    
        #alias grep='grep --color=auto'
        #alias fgrep='fgrep --color=auto'
        #alias egrep='egrep --color=auto'
    fi
    
    # some more ls aliases
    #alias ll='ls -l'
    #alias la='ls -A'
    #alias l='ls -CF'
    
    # enable programmable completion features (you don't need to enable
    # this, if it's already enabled in /etc/bash.bashrc and /etc/profile
    # sources /etc/bash.bashrc).
    if [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
    fi
    source ~/.local/bin/bashmarks.sh
    
    export PATH=/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:$HOME/bin:$PATH
    export MANPATH=/opt/local/man:$MANPATH
    export CLICOLOR=1
    export LSCOLORS=ExFxCxDxBxegedabagacad
    
  • Answers
  • executor21

    Found (partially) an answer. If this portion is commented out:

    # If this is an xterm set the title to user@host:dir
    case "$TERM" in
    xterm*|rxvt*)
        PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
        ;;
    *)
        ;;
    esac
    

    i.e.:

    # If this is an xterm set the title to user@host:dir
    #case "$TERM" in
    #xterm*|rxvt*)
    #    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    #    ;;
    #*)
    #    ;;
    #esac
    

    The tab titles are preserved as long as you're on the local machine. The server still changes them.

  • Daniel Beck

    Make sure $PROMPT_COMMAND is not set by running

    echo $PROMPT_COMMAND
    

    If the output is non-empty, that script is executed just before a prompt is displayed by the shell.


    On OS X Lion, the default value is update_terminal_cwd, and it looks like this:

    $ type update_terminal_cwd
    update_terminal_cwd is a function
    update_terminal_cwd () 
    { 
        local SEARCH=' ';
        local REPLACE='%20';
        local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}";
        printf '\e]7;%s\a' "$PWD_URL"
    }
    

    It is used to add the current working directory to Terminal's title bar.


  • Related Question

    search - How to get Firefox to stop opening searches in another tab?
  • RCIX

    This may seem like a dumb question but how do I stop Firefox from opening up a Google search in a new tab?

    I usually open a new tab first before searching and if I don't then I don't want it open in a new tab.


  • Related Answers
  • heavyd

    There is a configuration setting you can change to keep Firefox from opening in a new tab:

    1. Open a new tab and type about:config in the address bar
    2. Find the key browser.search.openintab
    3. Double click the setting to toggle the value to false
  • Peter Mortensen

    I do not get this behavior in my Firefox.

    I have Tab Mix Plus extension installed which seems to have a checkbox to force search results to a new tab (it is unchecked).

    Do you have this installed and,

    • Tab Mix Plus Options
      • Events
        • Tab Opening
          • Open tabs from: Search bar -- checked?
  • random

    Set browser.newtab.url to blank in about:config

  • 8088

    I assume you are using the Google Search bar.

    alt text