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