2

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

1 ответ1

6

Добавьте 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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .