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"?
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.
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.
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 $