O prompt da linha de comando parece estranho no console virtual

2

Em um emulador de terminal como o xterm, meu prompt é assim:

[august@macmini ~]$

mas em um console virtual, a string ;linux é prefixada ao prompt para que pareça com isso:

;linux[august@macmini ~]$

Alguém sabe de onde a string "linux" pode vir?

    
por August Karlstrom 05.05.2013 / 14:10

3 respostas

2

Acontece que as coisas dão errado quando um comando para definir o título da janela é executado em um console virtual (onde não há janela). Mudando

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

para

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

resolve o problema.

    
por August Karlstrom 07.05.2013 / 10:29
0

Apenas por diversão, aqui está como eu configurei o meu prompt:

# 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='\[3[0;1m\]'
color_reset='\[3[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

Parece com isso:

glennj@homebase: ~
200 $ (exit 42)

glennj@homebase: ~
[42] 201 $ cd /tmp

glennj@homebase: /tmp
202 $ 
    
por glenn jackman 07.05.2013 / 12:57
0

Eu não estava louco com a solução fornecida aqui, pois uso o mesmo TERM para terminais virtuais do Ubuntu que outros terminais (screen-256color). Assim, dei uma rápida olhada em quais outras variáveis de ambiente poderiam ser úteis para esse propósito.

Minha conclusão foi usar a variável XDG_VTNR (XDG virtual terminal number?). Como o Ubuntu usa o VT # 7 para o ambiente de área de trabalho, uma simples verificação para saber se essa variável é maior ou igual a 7 é o suficiente.

Eu tenho a função bash que constrói meu prompt de qualquer maneira, então eu apenas rodei a adição da sequência de escape do título com uma verificação em relação à variável XDG_VTNR.

Por exemplo, observe a parte em negrito abaixo:

# 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  

Só queria adicionar esta nota caso possa ser útil para qualquer outra pessoa.

    
por daBeamer 12.04.2014 / 07:41