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


13

Lorsque je lance l'écran, cela modifie mon invite. Comment 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]\$

Fait intéressant, il ne le fait pas sur d'autres machines. La machine en question est Redhat 4 mise à jour 4, avec la version d'écran 4.00.02 (FAU) 5-Dec-03.

Réponses:


16

Essayez d'ajouter (en supposant qu'il n'est pas déjà là) à votre fichier .screenrc:

shell - $ SHELL

Cela vous donnera un shell de connexion lorsque vous initialisez une session écran ou créez un autre terminal à partir de celui-ci.


1
J'avais «shell / bin / bash» dans mon .screenrc, apparemment il aurait dû être «shell - / bin / bash» ou ce que vous avez fourni.
Swoogan

2

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

# définir une invite de fantaisie (sans couleur, sauf si nous savons que nous "voulons" de la couleur)
cas "$ TERM" dans
    xterm-color) color_prompt = yes ;;
esac

Étant donné que screen utilise sa propre variable TERM ("screen"), bash pense qu'il n'est pas capable d'afficher une invite de couleur fantaisie, il est par défaut plus simple. L'écran est bien entendu parfaitement capable des mêmes invites complexes qu'un terminal normal.

Donc, pour remplacer ce comportement, définissez simplement vos options PS1 préférées à la fin de votre ~/.bashrcfichier. Ou, si vous vous sentez aventureux, trouvez le test qui vérifie la valeur de la variable TERM et modifiez-la pour accepter "screen" en plus de "xterm-color".


1

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


1
Oui, vérifiez setenv PS1 dans l'écran global ou personnel
rayon

4
Et quelle variable personnalisée serait-ce? Si vous ne connaissez pas la réponse, ne répondez pas.
Swoogan

0

A eu le même problème (plus d'invite personnalisée à l'écran) sur une machine avec SHELL -$SHELLet pas setenv PS1dans screenrc, et aucun test spécial pour le terminal (stupide) dans bashrc.

Définition du $ TERM utilisé:

$ echo $TERM
urxvt-unicode-256color

dans screenrc a récupéré mon invite personnalisée sous l'écran:

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

PS: un autre compte n'en avait pas besoin, mais bashrc teste les 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 aussi:

if [ "$TERM" != "dumb" ]; then
PS1=<my fancy prompt>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.