Приглашение командной строки выглядит странно в виртуальной консоли

В эмуляторе терминала, таком как xterm, моя подсказка выглядит так:

[august@macmini ~]$

, но в виртуальной консоли строка ;linux добавляется к подсказке, чтобы она выглядела так:

[ 111]

Кто-нибудь знает, откуда взялась строка "linux"?

2
задан 5 May 2013 в 16:10

3 ответа

Я не был в восторге от решения, представленного здесь, поскольку я использую тот же TERM для виртуальных терминалов Ubuntu, что и другие терминалы (screen-256color). Таким образом, я быстро взглянул на то, какие другие переменные среды могут быть полезны для этой цели.

Мой вывод заключался в использовании переменной XDG_VTNR (номер виртуального терминала XDG?). Поскольку Ubuntu использует VT # 7 для среды рабочего стола, простая проверка того, является ли эта переменная больше или равна 7, делает свое дело.

У меня есть функция bash, которая в любом случае создает мое приглашение, поэтому я просто окружил добавление escape-последовательности заголовка проверкой переменной XDG_VTNR.

Например, обратите внимание на часть , выделенную жирным шрифтом ниже:

# Use new test (i.e. [[ ]]) so as not to fail if XDG_VTNR does not exist
if [[ $XDG_VTNR -ge 7 ]]; then
  # Add the window title escape sequence to the prompt
else
  # Don't add the window title escape sequence to the prompt
fi  

Просто хочу добавить эту заметку на тот случай, если она может пригодиться кому-либо еще.

0
ответ дан 5 May 2013 в 16:10

Оказывается, что все идет не так, когда команда для установки заголовка окна выполняется в виртуальной консоли (где нет окна). Изменение

PROMPT_COMMAND='printf "\e]0;%s\a" "$TERM"'

на

if [[ $TERM = xterm* ]]; then
    PROMPT_COMMAND='printf "\e]0;%s\a" "$TERM"'
fi

решает проблему.

0
ответ дан 5 May 2013 в 16:10

Просто для забавы, вот как я установил свое приглашение:

# 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 $ 
0
ответ дан 5 May 2013 в 16:10

Другие вопросы по тегам:

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