web-dev-qa-db-fra.com

L'invite de ligne de commande semble étrange dans la console virtuelle

Dans un émulateur de terminal comme xterm, mon invite ressemble à ceci:

[august@macmini ~]$

mais dans une console virtuelle, la chaîne ;linux est ajouté à l'invite pour qu'il ressemble à ceci:

;linux[august@macmini ~]$

Est-ce que quelqu'un sait d'où peut provenir la chaîne "linux"?

2

Il s'avère que les choses tournent mal lorsqu'une commande pour définir le titre de la fenêtre est exécutée dans une console virtuelle (où il n'y a pas de fenêtre). En changeant

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

à

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

résout le problème.

2

Je n'étais pas fou de la solution fournie ici car j'utilise le même TERM pour les terminaux virtuels Ubuntu que les autres terminaux (screen-256color). Ainsi, j'ai jeté un coup d'œil à quelles autres variables d'environnement pourraient être utiles à cet effet.

Ma conclusion a été d'utiliser la variable XDG_VTNR (numéro de terminal virtuel XDG?). Comme Ubuntu utilise VT # 7 pour l'environnement de bureau, une simple vérification pour savoir si cette variable est supérieure ou égale à 7 fait l'affaire.

J'ai quand même une fonction bash qui construit mon invite, donc j'ai juste entouré l'addition de la séquence d'échappement du titre avec une vérification par rapport à la variable XDG_VTNR.

Par exemple, notez le en gras partie ci-dessous:

 # Utilisez un nouveau test (c'est-à-dire [[]]) afin de ne pas échouer si XDG_VTNR n'existe pas 
if [[$ XDG_VTNR -ge 7]]; ensuite
 # Ajoutez la séquence d'échappement du titre de la fenêtre à l'invite 
 Sinon 
 # N'ajoutez pas la séquence d'échappement du titre de la fenêtre à l'invite 
 Fi 

Je voulais juste ajouter cette note au cas où elle pourrait être utile à quelqu'un d'autre.

0
daBeamer

Juste pour le plaisir, voici comment j'ai configuré mon invite:

# 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

Ressemble à ça:

glennj@homebase: ~
200 $ (exit 42)

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

glennj@homebase: /tmp
202 $ 
0
glenn jackman