13 votes

Comment empêcher GNU Screen de réinitialiser mon invite ?

Lorsque j'exécute screen, cela modifie mon invite. Comment puis-je empêcher ce comportement ? Par exemple :

$ echo $PS1
\[\e]0;\h:Prod\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
$ screen
$ echo $PS1
[\u@\h \W]\$

Il est intéressant de noter que cela ne se produit pas sur d'autres machines. La machine en question est Redhat 4 update 4, avec Screen version 4.00.02 (FAU) 5-Dec-03.

16voto

Craig Hyatt Points 601

Essayez d'ajouter (en supposant que ce ne soit pas déjà le cas) à votre fichier .screenrc :

shell -$SHELL

Cela vous donnera un login Shell lorsque vous initialiserez une session écran ou créerez un autre terminal à partir d'une session écran.

2voto

Insyte Points 9294

De nombreuses distributions vérifient le type de terminal avant de définir l'invite. Ubuntu, par exemple, contient ce petit bijou dans le fichier .bashrc par défaut :

\# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color\_prompt=yes;;
esac

Puisque screen utilise sa propre variable TERM ("screen"), bash pense qu'il n'est pas capable d'afficher une invite en couleur fantaisiste, et en propose donc une plus simple par défaut. Screen est, bien sûr, capable d'afficher les mêmes invites complexes qu'un terminal normal.

Ainsi, pour annuler ce comportement, il suffit de définir en dur vos options PS1 préférées à la fin de votre fichier ~/.bashrc fichier. Ou, si vous vous sentez d'humeur aventureuse, trouvez le test qui vérifie la valeur de la variable TERM et modifiez-le pour accepter "screen" en plus de "xterm-color".

1voto

Magicka Points 11

Peut-être s'agit-il d'une variable personnalisée définie dans le fichier ~/.screenrc ?

0voto

blackfromabove Points 41

J'ai eu le même problème (plus d'invite personnalisée à l'écran) sur une machine avec SHELL -$SHELL et non setenv PS1 dans screenrc, et pas de test spécial pour un terminal (muet) dans bashrc.

Définition du $TERM utilisé :

$ echo $TERM
urxvt-unicode-256color

dans screenrc a permis de récupérer mon invite personnalisée sous Screen :

- #term xterm-256color
+ term urxvt-unicode-256color

PS : un autre compte n'en avait pas besoin, mais bashrc teste les couleurs de dircolors et un terminal moderne de cette façon 1 :

if [[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] ; then
PS1=<my fancy prompt>

Je pense que cela fonctionne également :

if [ "$TERM" != "dumb" ]; then
PS1=<my fancy prompt>

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X