49 votes

Comment demander à screen de se comporter comme un Shell standard de bash ?

Je viens d'apprendre l'existence de la commande screen sous linux - c'est génial. Je l'adore. Cependant, le terminal/prompt réel dans screen ressemble et se comporte différemment de mon prompt bash standard. C'est-à-dire que les couleurs ne sont pas les mêmes, la complétion par tabulation ne semble pas fonctionner, etc.

Existe-t-il un moyen de faire en sorte que screen se comporte comme un prompt bash normal (du moins, normal comme dans ce que j'ai l'habitude de faire) ?

Informations complémentaires

Je me connecte via ssh depuis un Mac (Terminal) à une machine linux sans tête (Ubuntu). Après m'être connecté, j'ai TERM=xterm-color et quand je lance l'écran, j'ai TERM=screen .

Je vais essayer de suivre les suggestions ci-dessous pour voir si je peux changer l'adresse de l'ordinateur. $TERM valeur en premier.

0 votes

Juste par curiosité, quel système d'exploitation et quel type de terminal avez-vous à l'écran de démarrage ? Je pense que votre problème est plus lié au fait que votre terminal fait quelque chose de mal ou identifie incorrectement l'écran.

0 votes

@Zoredache - J'ai ajouté cette information au post, ci-dessus. Merci. J'ai dû ajuster les paramètres de mon terminal pour que la touche de retour arrière fonctionne...

0 votes

Beurk, je n'aime vraiment pas Terminal.app. Personnellement, je vous suggère d'envisager d'utiliser une alternative voir ( serverfault.com/questions/19240/ )

51voto

jmb Points 130

Merci à ce poste Ce que j'ai fait, c'est ajouter une ligne à ~/.screenrc :

# ~/.screenrc
defshell -bash      # dash makes it a login shell

Alors les choses dans votre ~/.bashrc , /etc/bashrc etc. doivent être exécutés.

15voto

ashwnacharya Points 3144

L'écran change le type de terme en screen . Vous pouvez faire l'une des deux choses suivantes :

  1. modifier le paramètre de terme dans votre .screenrc
  2. modifier votre .bashrc Les fichiers recherchent TERM=screen ainsi que TERM=xterm

13voto

Kyle Points 484

J'aime la façon dont vous avez rédigé votre question, je me demandais la même chose et j'ai mis un peu de temps à comprendre. J'avais la chance de connaître déjà un peu l'invocation de Shell, donc je me suis dit que le problème se trouvait là, quelque part.

Voici mes conclusions. Tout d'abord, je trouve personnellement intéressant et intéressant de connaître la différence entre un Shell de login et un Shell de non-login. Faites un man $SHELL et recherchez la section sur l'INVOCATION pour en savoir plus.

Vous pouvez demander à votre instance Shell actuelle si c'est une Shell de connexion ou une Shell de non connexion en émettant une commande shopt login_shell sur votre invite. Notez que cette option est normalement en lecture seule.

Sur mes systèmes Debian, screen a toujours été fourni par défaut avec des shells sans login.

Après avoir cherché sur le web et lu man $SHELL J'ai fait quelques essais et les deux approches suivantes ont fonctionné pour moi. Dans ~/.screenrc ajouter/mettre à jour une ligne comme suit :

shell -$SHELL

Si cela ne fonctionne pas ET que vous utilisez bash vous pouvez aussi essayer, comme l'a fait la personne suivante Seamus :

defshell -bash

Comme mentionné, vous pouvez tester si votre instance actuelle de Shell est une Shell de connexion en émettant shopt login_shell sur votre invite.

10voto

jason saldo Points 5036

Selon la façon dont vous avez l'habitude d'exécuter Bash, il se peut que vous exécutiez un login Shell. Lorsque vous exécutez screen vous exécutez un Shell interactif sans login.

La différence réside dans les scripts de démarrage qui sont exécutés.

  • /etc/bash.bashrc puis ~/.bashrc proviennent du démarrage d'un Shell interactif non connecté.

  • /etc/profile alors le premier trouvé de ~/.bash_profile , ~/.bash_login y ~/.profile sont sourcés lorsqu'un login interactif Shell est lancé.

Cela peut vous affecter.

Je vérifierais également si $TERM est différent.

3voto

SteveCl Points 1655

Screen ne remplace pas bash, il l'exécute, ou tout autre Shell. peut-être exécute-t-il csh , zsh ou bash mais avec des paramètres différents.

la première chose que j'essaierais de faire est de vérifier avec ps y /proc/<pid>/cmdline pour s'assurer qu'il utilise le même Shell avec les mêmes paramètres que le login fait.

après cela, vérifiez /etc/screenrc et tout autre fichier mentionné à man screen Section FILES.

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