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

3062
Sam Brightman

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

2
Какую оболочку вы используете на локальной стороне? Ignacio Vazquez-Abrams 13 лет назад 0
У меня нет доступа прямо сейчас, но я уверен, что это bash - что бы ни было по умолчанию для терминала gnome в Fedora 13. Sam Brightman 13 лет назад 0
Я исправил это, используя несколько команд-оболочек для ssh и su: http://unix.stackexchange.com/a/341277/112190 phyatt 7 лет назад 0

1 ответ на вопрос

6
grawity

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

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")\]" fi 

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

update_title() { title "$USER@$HOSTNAME $" } PROMPT_COMMAND="update_title" 

Похожие вопросы