Como faço para parar a mudança automática dos títulos da aba iterm?

5

Depois de mudar para usar .bashrc em vez de .bash_profile (não gostei de como o terminal padrão trabalhou com um arquivo de configuração e utilitários como screen com outro), o comportamento do iterm2 mudou. Antes, quando eu definia os títulos das guias manualmente, elas permaneceriam lá, a menos que eu ssh em outro servidor, ponto em que o título mudaria para username@otherservername: /location/in/other/servers/filesystem . Agora, quando eu mudo os títulos das abas, eles permanecem assim até o primeiro comando que eu executo naquela aba. Assim que eu executar algo, o título da aba muda para myusername@mymacname: /my/location/in/my/mac/filesystem .

Usando o argumento da linha de comando, echo -ne "\e]1;tab title\a" não ajuda. Ele alterna (lento o suficiente para notar a mudança de título na tela), mas quando o comando sai, o título está de volta onde costumava estar: myusername@mymacname: /my/location/in/my/mac/filesystem .

Idealmente, gostaria que os títulos das guias NUNCA fossem alternados automaticamente, inclusive quando eu ssh em outro servidor. Se isso não for possível, eu gostaria de retornar ao comportamento anterior: desde que eu esteja na máquina local, mantenha os títulos das guias que defini. Isso pode ser feito?

Aqui está o meu arquivo .bashrc:

# ~/.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)}\[3[01;36m\]\u@\h\[3[00m\]:\[3[01;34m\]\W\[3[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
    
por executor21 06.10.2011 / 20:56

5 respostas

1

Encontrado (parcialmente) uma resposta. Se esta parte for comentada:

# 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

ou seja:

# 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

Os títulos das guias são preservados enquanto você estiver na máquina local. O servidor ainda os altera.

    
por 10.11.2011 / 21:15
6

Acesse as Preferências do Iterm > Perfis > Terminal

Desmarque "O terminal pode definir o título da guia / janela"

Agora você pode nomear sua guia, ssh em um servidor, sair e ainda manter o nome da guia original.

Crédito para: link

Felicidades, Alan

    
por 29.09.2017 / 19:43
5

Certifique-se de que $PROMPT_COMMAND não esteja definido executando

echo $PROMPT_COMMAND

Se a saída não for vazia, esse script será executado logo antes que um prompt seja exibido pelo shell.

No OS X Lion, o valor padrão é update_terminal_cwd e é assim:

$ 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"
}

É usado para adicionar o diretório de trabalho atual à barra de título do Terminal.

    
por 10.11.2011 / 21:27
4

Para impedir que os hosts que você usa alterem o título, geralmente fazendo

export TERM=vt100

antes de você fazer o truque ssh, porque os arquivos de inicialização padrão (bashrc etc) olham para a variável terminal e só mudam o título se o terminal for xterm (que atualmente é o padrão de fato).

Nota: com este truque, você perde pelo menos a "tela alternativa", cores e talvez outros tipos de recursos sofisticados que você pode ou não apreciar.

    
por 05.08.2014 / 16:00
1

Obrigado a todos aqui. Eu finalmente descobri o que eu precisava.

  1. Apenas manter nomes de guias locais mantidos é inútil para mim porque estou lidando especificamente com ssh em caixas.

  2. Eu uso cores no meu terminal e não quero desativar as cores como a solução do Viljo faria.

Especificamente, estou executando várias caixas vagrant em minha máquina local e mantenho as guias abertas para várias delas. Eu quero facilmente definir o nome da guia para a versão do sistema operacional da caixa vagrant e mantê-lo assim. Mantenho as guias abertas por um longo tempo, então não me importo de definir o nome manualmente, mas ele não precisa ser redefinido voltar automaticamente.

Além disso, como esses são vagrant boxes, não quero alterar as configurações neles que terei que alterar novamente mais tarde se eu vagrant destroy .

Então, minhas descobertas:

No CentOS 6, o código de atualização do nome da guia é colocado em $PROMPTNAME . Ele pode ser neutralizado e o nome da tabela definido em um comando executando:

PROMPT_COMMAND="" && printf '\e]1;%s\a' "CentOS 6.6"

No Ubuntu, o código de atualização do nome de tabela está diretamente em $PS1 ; Ele é prefixado ao valor já definido de $PS1 por ~/.bashrc . Isso pode ser revertido e o nome da tabela definido em um comando executando:

PS1="${PS1##*\}}" && printf '\e]1;%s\a' "Ubuntu 14.04"
    
por 23.12.2015 / 06:13