Utiliser l'écran GNU comme «shell» de connexion

22

Quelle est la meilleure façon d'exécuter automatiquement l'écran lorsque vous ouvrez un nouveau shell, que ce soit par connexion, xterm ou autre chose?

Je vois que la recommandation la plus courante est de mettre exec screendans le fichier rc ou login / profile de votre shell habituel, mais pour, par exemple, tcsh, les shells de connexion exécutent .login en dernier, tandis que les shells sans connexion lisent .cshrc en dernier. Si je mets exec screenen .cshrc, les shells de connexion ne fourniront pas le fichier .login, et si je le mets en .login, les shells sans connexion ne s'exécuteront pas à l'écran. Je suppose qu'il y a des problèmes similaires avec d'autres obus.

wfaulk
la source
1
Cela ne répond pas à la question, mais cela vaut la peine d'être mentionné: tmux est une étape révolutionnaire par rapport à l'écran et essaie d'être proche d'un clavier compatible avec l'écran. Cette page explique comment le démarrer automatiquement à partir de .bashrc.
datcha

Réponses:

19

Une façon est:

# if $STY is not set...
if [ -z "$STY" ]; then
    exec screen -ARR
fi

Notez que ceci est écrit pour bash, mais devrait être similaire pour cshaussi. Mettez-le à .cshrcexécuter pour tous les obus.


Une autre façon: vous pouvez simplement définir screenvotre shell de connexion en /etc/passwdlui-même et mettre cette ligne dans votre ~/.screenrc: (Fixez le chemin, bien sûr.)

defshell / bin / csh

Mais cela peut casser les programmes qui exécutent le shell de connexion défini dans /etc/passwddiverses commandes.

( Modifier: N'oubliez pas d'ajouter l'écran à /etc/shells)

grawity
la source
1
Je ne connaissais pas la variable STY auparavant, et en la recherchant dans le manuel de l'écran, j'ai également constaté que vous pouvez exécuter screen in-screen pour exécuter des commandes dans une nouvelle fenêtre (par exemple, "screen vi" ouvrira vi dans un nouvelle fenêtre, sans coque de contrôle). BTW, pour csh, vous le mettriez dans le fichier .login pas .cshrc, vous ne voulez pas qu'il fonctionne pour "tous" les shells. Samething s'applique à bash, mettez-le dans .profile ou .bash_login, pas dans .bashrc.
haridsv
4

Vieille question, mais googler pour la même chose m'a amené ici, alors voici une réponse pour toute autre personne qui tombe sur cette page.

La meilleure chose que j'ai trouvée jusqu'à présent est byobu si votre distribution l'a. Livré avec une option pour s'exécuter à la connexion et contrôle plusieurs écrans à la fois.

Vous pouvez vous détacher et vous déconnecter à un emplacement, puis vous connecter à la même session à un autre emplacement.

Je trouve que l'écran est génial à utiliser pour exécuter des processus serveur, mais byobu est idéal pour les choses de tous les jours.

solbot
la source
-2

Que diriez-vous d'utiliser chsh:

chsh /usr/bin/screen

Cela définit le shell de connexion par défaut dans / etc / passwd. (vous pouvez le faire là aussi)

mrossi
la source
Il devient alors difficile de faire autre chose avec votre compte que de vous connecter. De plus, votre administrateur système n'a probablement pas d'écran dans / etc / shells. Voir également la réponse acceptée.
wfaulk