Как мне заставить gnome-терминал восстановить его заголовок после ssh?

Я использую gnome-терминал, настроенный для обновления своего заголовка в соответствии с командами терминала, которые обновляют свои собственные заголовки (по умолчанию в Fedora 13). Когда я SSH куда-то еще, заголовок обновляется правильно, но затем SSH завершается, и gnome-терминал указывает, что я все еще вошел в систему удаленно. Это сбивает с толку при попытке ориентироваться. Как сохранить поведение при входе в систему и восстановить старый заголовок при выходе из системы (по умолчанию просто "Терминал", но лучше пока отображать текущее местоположение)?

1 ответ

Решение

Добавьте escape-последовательности set-title в rc-файл вашей оболочки. За bash v4, это будет:

if [[ $TERM == xterm* ]]; then
    # This puts "user@host workdir" into the titlebar.
    # (look for section "PROMPTING" in bash's manual)
    title='\u@\h \w'

    PS1+="\[\e]0;$title\007\]"
fi

в вашем ~/.bashrc,


Прекратите читать здесь, если вы не любите возиться сbashскрипты.

Код выше на самом деле очень упрощенная версия моего ~/.bashrc фрагмент кода:

case $TERM in
[xkE]term*|rxvt*|cygwin)
    title_seq='\e]0;%s\007';;
screen*)
    # only set the "screen"window title
    title_seq='\ek%s\e\\';;
esac

# Very useful for: title syslog && tailf /var/log/syslog
title() { [ "$title_seq" ] && printf "$title_seq" "$*"; }

# Modify the prompt string.
if [ "$title_seq" ]; then
    title='\u@\h \w'
    PS1+="\[$(printf "${title_seq//\\/\\\\}" "$title")\]"
fi

На самом деле, это был мой старый ~/.bashrc сниппет. При обнаружении PROMPT_DIRTRIM=1 Я должен был заменить $PS1 модификация (последняя if заявление) с:

update_title() {
    title "$USER@$HOSTNAME ${PWD/#$HOME/~}"
}
PROMPT_COMMAND="update_title"
Другие вопросы по тегам