Wie stoppe ich den automatischen Wechsel der Titel auf der Registerkarte?

6612
executor21

Nach dem Umstieg auf using .bashrcanstelle von .bash_profile(es hat mir nicht gefallen, wie das Standardterminal mit einer Konfigurationsdatei und Dienstprogrammen wie screenmit einem anderen funktioniert), änderte sich das Verhalten von iterm2. Wenn ich die Registerkartentitel manuell eingestellt habe, bleiben sie dort, es sei denn, ich würde einen sshanderen Server verwenden. Danach ändert sich der Titel in username@otherservername: /location/in/other/servers/filesystem. Wenn ich jetzt die Registerkartentitel ändere, bleiben sie so lange, bis der erste Befehl auf dieser Registerkarte ausgeführt wird. Sobald ich etwas ausgeführt habe, wechselt der Tab-Titel zu myusername@mymacname: /my/location/in/my/mac/filesystem.

Das Kommandozeilenargument echo -ne "\e]1;tab title\a"hilft nicht. Es tut Schalter (langsam genug, um den Titel zu ändern auf dem Bildschirm zu bemerken), aber wenn der Befehl beendet wird, der Titel ist wieder da, wo es früher ist: myusername@mymacname: /my/location/in/my/mac/filesystem.

Im Idealfall möchte ich, dass die Registerkartentitel NIEMALS automatisch umgeschaltet werden, auch wenn ich einen sshanderen Server verwende. Wenn dies nicht möglich ist, möchte ich zum vorherigen Verhalten zurückkehren: Solange ich mich auf dem lokalen Computer befinde, behalten Sie die von mir festgelegten Tab-Titel bei. Kann das gemacht werden?

Hier ist meine .bashrc-Datei:

# ~/.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$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='$\[\033[01;36m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ ' else PS1='$\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;$\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 
5
Verwandte Themen: http://superuser.com/q/223308/504387 Wildcard vor 8 Jahren 0

5 Antworten auf die Frage

6
user776021

Gehen Sie zu Iterms Voreinstellungen> Profile> Terminal

Deaktivieren Sie "Terminal kann Tab / Fenstertitel festlegen"

Jetzt können Sie Ihrem Tab, ssh einen Server zuweisen, den Tab-Namen verlassen und den ursprünglichen Tab-Namen beibehalten.

Dank an: https://groups.google.com/forum/#!topic/iterm2-discuss/czV-sv4ykzI

Prost, Alan

5
Daniel Beck

Stellen Sie sicher, dass $PROMPT_COMMANDnicht durch Ausführen festgelegt ist

echo $PROMPT_COMMAND 

Wenn die Ausgabe nicht leer ist, wird dieses Skript ausgeführt, bevor die Shell eine Eingabeaufforderung anzeigt.


Unter OS X Lion ist der Standardwert wie folgt update_terminal_cwd:

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

Es wird verwendet, um das aktuelle Arbeitsverzeichnis zur Titelleiste von Terminal hinzuzufügen.

4
Viljo Viitanen

Um zu verhindern, dass Hosts den Titel ändern, tun Sie dies normalerweise

export TERM=vt100 

Bevor Sie ssh ausführen, wird der Trick ausgeführt, da die Standardinitialisierungsdateien (bashrc usw.) die Terminalvariable betrachten und den Titel nur ändern, wenn das Terminal xterm ist (was heutzutage der De-facto-Standard ist).

Hinweis: Mit diesem Trick verlieren Sie mindestens "alternative Bildschirme", Farben und andere Arten von ausgefallenen Terminalfunktionen, die Sie möglicherweise nicht schätzen.

Ich kann meine Tabs nicht nur richtig benennen, ich muss nicht mehr jede SSH-Sitzung mit "unalias -a" beginnen, um Farben zu vermeiden. CodeReaper vor 8 Jahren 0
1
executor21

(Teilweise) eine Antwort gefunden. Wenn dieser Teil auskommentiert ist:

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

dh:

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

Die Tab-Titel bleiben erhalten, solange Sie sich auf dem lokalen Computer befinden. Der Server ändert sie immer noch.

Schauen Sie sich die Standard-PS1 der Remote-Maschine an: Geben Sie in der Befehlszeile "echo $ PS1" ein, um sie anzuzeigen, und geben Sie "PS1 =" \ $ "ein, um einen minimalen Wert festzulegen, um zu testen, ob diese Einstellung für die Änderung Ihres Computers verantwortlich ist Fenstertitel. Daniel Beck vor 12 Jahren 1
1
Wildcard

Thanks to everyone here. I FINALLY figured out what I needed to.

  1. Just having local tab names kept is useless for me because I'm specifically dealing with ssh into boxes.

  2. I use colors in my terminal and I don't want to disable colors as Viljo's solution would do.

Specifically, I'm running multiple vagrant boxes on my local machine and I keep tabs open to several of them. I want to easily set the tab name to the OS version of the vagrant box, and have it stay that way. I keep the tabs open for a long time, so I don't mind setting the name manually, but it needs to not be reset back automatically.

Also, since these are vagrant boxes, I don't want to change settings on them that I will have to change again later if I vagrant destroy.

So, my findings:

On CentOS 6, the tabname updating code gets placed in $PROMPTNAME. It can be neutralized and the tabname set in one command by running:

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

On Ubuntu, the tabname updating code is directly in $PS1; it gets prepended to the already set value of $PS1 by ~/.bashrc. This can be reverted and the tabname set in one command by running:

PS1="$}" && printf '\e]1;%s\a' "Ubuntu 14.04"