Приглашение командной строки выглядит странно в виртуальной консоли
В эмуляторе терминала, таком как xterm, мое приглашение выглядит так:
[august@macmini ~]$
но в виртуальной консоли строка ;linux
добавляется к приглашению, чтобы оно выглядело так:
;linux[august@macmini ~]$
Кто-нибудь знает откуда взялась строка "linux"?
3 ответа
Оказывается, что все идет не так, когда команда для установки заголовка окна выполняется в виртуальной консоли (где нет окна). изменения
PROMPT_COMMAND='printf "\e]0;%s\a" "$TERM"'
в
if [[ $TERM = xterm* ]]; then
PROMPT_COMMAND='printf "\e]0;%s\a" "$TERM"'
fi
решает проблему.
Я не был в восторге от решения, представленного здесь, поскольку я использую тот же TERM для виртуальных терминалов Ubuntu, что и другие терминалы (screen-256color). Таким образом, я быстро взглянул на то, какие другие переменные среды могут быть полезны для этой цели.
Мой вывод заключался в использовании переменной XDG_VTNR (номер виртуального терминала XDG?). Так как Ubuntu использует VT#7 для среды рабочего стола, простая проверка того, является ли эта переменная больше или равна 7, делает свое дело.
У меня есть функция bash, которая в любом случае создает мое приглашение, поэтому я просто окружил добавление escape-последовательности заголовка проверкой переменной XDG_VTNR.
Например, обратите внимание на выделенную жирным шрифтом часть ниже:
# Используйте новый тест (т. Е. [[ ]]), Чтобы не потерпеть неудачу, если XDG_VTNR не существует if [[ $XDG_VTNR -ge 7 ]]; затем # Добавьте escape-последовательность заголовка окна в подсказку еще # Не добавляйте escape-последовательность заголовка окна в подсказку фи
Просто хотел добавить эту заметку на тот случай, если она может пригодиться кому-то еще.
Просто для удовольствия, вот как я установил свою подсказку:
# inspiration: http://www.stumbleupon.com/su/2LpQMi
user_host_path="${debian_chroot:+($debian_chroot) }"'\u@\h: \w'
xterm_title='\[\e]0;'"$user_host_path"'\a\]'
color_bold='\[\033[0;1m\]'
color_reset='\[\033[0m\]'
[[ $TERM == xterm* || $TERM == rxvt* ]] && first_part="${xterm_title}"
first_part+="\n${user_host_path}\n"
last_part='\! \$ '
PROMPT_COMMAND="((\$? != 0)) && PS1='${first_part}${color_bold}[\$?]${color_reset} ${last_part}' || PS1='${first_part}${last_part}'"
unset user_host_path xterm_title color_bold color_reset first_part last_part
Выглядит так:
glennj@homebase: ~
200 $ (exit 42)
glennj@homebase: ~
[42] 201 $ cd /tmp
glennj@homebase: /tmp
202 $